abonnement Unibet Coolblue Bitvavo
  woensdag 23 maart 2005 @ 21:20:54 #26
46383 Tiemie
sowieso wel!
pi_25693791
erg interessant, python is vrij strict toch? (met inspringen e.d.)

tvp
  woensdag 23 maart 2005 @ 21:25:17 #27
69357 R-Mon
jong en dynamisch
pi_25693913
quote:
Op woensdag 23 maart 2005 21:20 schreef Tiemie het volgende:
erg interessant, python is vrij strict toch? (met inspringen e.d.)

tvp
Inderdaad.

De body van de lus is ingesprongen (indented): inspringing is de manier waarop in Python statements gegroepeerd worden. Python beschikt (nog!) niet over intelligente editing op invoerregelniveau, dus je moet zelf nog een tab of spatie(s) typen voor elke ingesprongen regel. In de praktijk zul je de wat complexere invoer voor Python in een teksteditor voorbereiden; de meeste teksteditors hebben een faciliteit voor automatisch inspringen. Bij het interactief invoeren van een samengesteld statement, moet dit gevolgd worden door een lege regel om aan te geven dat het statement compleet is (aangezien de parser niet kan raden dat je de laatste regel hebt ingetypt). Merk op dat je iedere regel binnen een blok even ver moet laten inspringen.
<tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
  FOK!-Schrikkelbaas woensdag 23 maart 2005 @ 21:29:21 #28
1972 Swetsenegger
Egocentrische Narcist
pi_25694038
Leuk leuk, maar is er ook een grafische schil of draait alles in CL (net als C++)?
  donderdag 24 maart 2005 @ 12:46:45 #29
69357 R-Mon
jong en dynamisch
pi_25704471
quote:
Op woensdag 23 maart 2005 21:29 schreef Swetsenegger het volgende:
Leuk leuk, maar is er ook een grafische schil of draait alles in CL (net als C++)?
Hier is de gui-faq: http://www.python.org/doc/faq/gui.html
En een voorbeeld van een grafisch Python-programma: http://www.blogtk.com (gtk -> linux)
<tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
  FOK!-Schrikkelbaas donderdag 24 maart 2005 @ 13:36:41 #30
1972 Swetsenegger
Egocentrische Narcist
pi_25705599
quote:
Op donderdag 24 maart 2005 12:46 schreef R-Mon het volgende:

En een voorbeeld van een grafisch Python-programma: http://www.blogtk.com (gtk -> linux)
Mooi voorbeeld... 404
pi_25705645
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
  donderdag 24 maart 2005 @ 13:48:33 #32
69357 R-Mon
jong en dynamisch
pi_25705888
quote:
Ja die dus
<tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
  donderdag 24 maart 2005 @ 13:59:58 #33
69357 R-Mon
jong en dynamisch
pi_25706165
En toen kwam ik erachter dat ik nog een operator vergeten was.
is not is niet gelijk aan

  • range()
    Met de functie range() kan je lists maken met rijen getallen. Dit kan heel handig zijn om te
    gebruiken in loops. De list die range() teruggeeft kan je natuurlijk weer in een variabele
    stoppen.

    De functie range() kan je op drie verschillende manieren gebruiken.
    range(x) - Een lijst van x getallen beginnend bij 0.
    range(x, y) - Een lijst die begint bij x en eindigt bij het y-de getal. Niet y! Het eerste
    item in een array/list/dictionary is (altijd) het nulde item.
    range(x, y, z) - Een lijst die begint bij x en doorloopt tot het y-de getal, met stappen van z.
    1
    2
    3
    4
    5
    6
    >>> range(5, 10)
    [5, 6, 7, 8, 9]
    >>> range(0, 10, 3)
    [0, 3, 6, 9]
    >>> range(-10, -100, -30)
    [-10, -40, -70]


  • len()
    Met de functie len() kan je:
    -de lengte van een string bepalen
    -het aantal items in een list bepalen
    Gebruik:
    1
    2
    3
    4
    >>> a="swetsenegger"
    >>>len(a)
    >>>b=[1,2,3,"do","re","mi"]
    >>>len(b)


  • Loops / lussen
    Python heeft natuurlijk ook loops, namelijk de for en while.

    for
    For loops worden bijvoorbeeld gebruikt om iets te doen met elk item van een list. Je
    gebruikt ze zo:
    1
    2
    3
    >>> for variabele uit object:
    ...    opdrachten
    ...


    Dit wil zeggen, "Doe de opdrachten voor elk item in het object." De variabele die je opgeeft
    kan je gebruiken in de opdrachten. Probeer dit maar eens:
    1
    2
    3
    >>> for x in range(10):
    ...    print x
    ...


    Dus, voor elk item in de lijst die range(10) geeft, wordt het huidige item (x) afgedrukt.
    Als de opdrachten zijn uitgevoerd gaat Python door met het volgende item.

    while
    While statements kan je gebruiken om opdrachten uit te voeren zolang er aan een of meerdere
    voorwaarden wordt voldaan. De voorwaarden werken hetzelfde als bij if en else.
    Een voorbeeld. We maken een variabele x met waarde 0. Dan printen we "hoi!" en hogen we x
    met 1 op, zolang x kleiner is dan 10.
    1
    2
    3
    4
    5
    >>> x=1
    >>> while x<10:
    ...    print "hoi!"
    ...    x=x+1
    ...


  • Even alles bij elkaar
    Een array netjes afdrukken:
    1
    2
    3
    4
    >>> a = ['Iene', 'miene', 'mutte']
    >>> for i in range(len(a)):
    ...     print i, a[i]
    ...


  • Variabelen met strings/getallen mengen
    Het is heel handig als je in bijvoorbeeld een loop netjes aan kan geven bij welke iteratie
    (item, loop, rondje) je bent. Daarom wil je wel eens een variabele mengen in een zin. Hiervoor gebruiken we komma's.
    1
    2
    3
    >>> x = 16
    >>> print "Jij zegt dat x", x, "is!"
    Jij zegt dat x 17 is!


    Zie je hoe het werkt? Een string, gevolgd door een komma, dan de variabele, dan weer een komma, en dan weer een string.

    Meer, meer, meer
    Python heeft iets grappigs. Je kan strings heel makkelijk meerdere keren na elkaar afdrukken. Doe dit maar eens:
    1
    2
    >>> g="la"
    >>> print 10*g


    Je kan het ook met getallen doen, maar dan moet je ze wel omvormen naar een string:
    1
    2
    >>> h=123
    >>> print 6*str(h)


  • Booleans
    Weer even terug naar de statements (if, elif, else, while). Om meerdere voorwaarden te gebruiken zijn er booleans. In Python zijn er and en or. Je zet ze gewoon tussen de voorwaarden.
    1if x<6 and x is not 2


    Meer over voorwaarden enz. staat op http://www.coolpython.nl/(...)07110000000000000000

  • Break
    Break kan je gebruiken om uit een lus te komen.
    1
    2
    3
    4
    >>> while True:
    ...    print "fok"
    ...    break
    ...


    Er valt nog veel meer te vertellen over al deze dingen. Je kan natuurlijk hier vragen stellen maar in de beginnersgids staat alles ook heel duidelijk uitgelegd.
  • &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
      zaterdag 26 maart 2005 @ 12:16:29 #34
    69357 R-Mon
    jong en dynamisch
    pi_25754253
  • Modules
    Als je de Python-interpreter afsluit en weer opstart, gaan de definities die je aangemaakt had (functies en variabelen) verloren. Als je een wat groter programma wilt schrijven, kun je dus in plaats daarvan beter een teksteditor gebruiken om de invoer voor de interpreter op te stellen en in een bestand op te slaan, en dit bestand vervolgens aan de interpreter te geven als invoer. Dit noemen we “een script schrijven”. Naarmate je programma langer wordt, wil je het misschien in verschillende bestanden opsplitsen, om het onderhoud te vergemakkelijken. Of je hebt misschien een handige functie geschreven die je in meerdere programma's wilt gebruiken, zonder de functie in ieder afzonderlijk programma te moeten kopiëren.

    Ter ondersteuning hiervan is het in Python mogelijk om definities in een apart bestand te zetten, en dit vervolgens te gebruiken in een script of in een interactieve interpretersessie. Zo'n bestand heet een module; definities uit een module kunnen geïmporteerd worden in andere modules of in de main module (de main module is de verzameling variabelen waar je toegang toe hebt in een script dat op top-level wordt uitgevoerd, of in “rekenmachine-modus”).

    Een module is een bestand wat Python-definities en -statements bevat. De bestandsnaam wordt gevormd door de modulenaam met het achtervoegsel .py. Binnen de module is de modulenaam (als een string) beschikbaar als de waarde van de globale variabele __name__.

    Modules gebruiken
    Om een module te gebruiken moet je hem importeren. Er zijn verschillende manieren om dingen uit een module te gebruiken (de hele module importeren, alleen de functies importeren).

    De module os bevat functies om bijvoorbeeld de omgeving (OS) en bestanden te manipuleren. Om een functie/object van een geimporteerde module op te roepen, gebruik je modulenaam.objectnaam.

    Kijk eens rechtsonderin, als het goed is zie je de tijd daar. Die gaan we veranderen. (Ik weet niet of dit ook onder Linux werkt maar het zal haast wel.)

    Open de interpreter.
    1
    2
    >>> import os  # module os importeren
    >>> os.system('time 0:15')  # functie system aanroepen en de tijd veranderen


    Tadaa, het is nu kwart over twaalf 's nachts. Je kan dezelfde functie gebruiken om de tijd weer goed te zetten (en anders op de normale manier).

    Python komt standaard met de "Standard Library". Deze bestaat uit een paar veel gebruikte modules. Zoals:
    os - OS manipuleren etc
    glob - bestandslijsten maken voor bijv zoekacties
    sys - handige Python functies (bijv commandline argumenten uitlezen)
    re - regular expressions
    math - wiskundige functies en constanten (pi)
    random - functies voor willekeurigheid
    urllib2 en smtplib - toegang tot internet leuk
    datetime - functies voor datum en tijd
    zlib, gzip, bz2, zipfile, en tarfile - datacompressie

    Zie ook http://www.coolpython.nl/(...)12800000000000000000
    En de Python Library Reference http://docs.python.org/lib/lib.html

    We gaan een module maken
    Ik denk dat ik genoeg heb verteld, dus we gaan het maar gewoon proberen. Pak je tekstverwerker erbij! (zie OP)

    Fibonacci was een wiskundige die een formule had gemaakt om een rij getallen te vormen waarbij twee opeenvolgende termen de volgende term volgen. Dat gaan we namaken.

    Open je editor (voorheen tekstverwerker )
    Tik dit over, let op de TABs. (Overtikken is leerzamer dan kopieren. Dan krijg je meer door wat het nou eigenlijk doet.)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # Module voor Fibonaccigetallen

    def fib(n):          # druk Fibonaccireeks af tot n
        a, b = 0, 1      # a en b definieren
        while b < n:   # zolang b kleiner is dan n
            print b,   # b afdrukken
            a, b = b, a+b   # a wordt b, en b wordt a+b

    def fib2(n):          # geef Fibonaccireeks tot n terug
        resultaat = []      # resultaat wordt een lege array
        a, b = 0, 1         # a en b definieren
        while b < n:      # zolang b kleiner is dan n
            resultaat.append(b)   # voeg b toe aan resultaat
            a, b = b, a+b      # a wordt b, en b wordt a+b
        return resultaat      # geef resultaat terug


    Gedaan? Sla het op als fibo.py (.py is de python extensie) in dezelfde map als de Python interpreter (c:\python24\).

    Start de interpreter weer. Importeer onze nieuwe module:
    1>>> import fibo


    Nu kunnen we de functies fib() en fib2() aanroepen.
    1
    2
    >>> fibo.fib(1000)
    >>> fibo.fib2(100)


    Als je de functie vaak wil gebruiken kan je de naam.naam afkorten door het in een variabele te stoppen:
    1
    2
    >>> fib = fibo.fib
    >>> fib(500)


    Bepaalde dingen importeren
    Als je slechts een functie uit een module wil importeren:
    1>>> from fibo import fib


    Twee of meer:
    1>>> from fibo import fib, fib2


    Alle namen (functies, variabelen, enz):
    1>>> from fibo import *


    Als je op deze manier hoef je niet meer de modulenaam aan te geven. Je fib() dus meteen aanroepen:
    1
    2
    >>> from fibo import fib
    >>> fib(1000)


    Functies die al in de module worden aangeroepen worden uitgevoerd zodra de module worden geimporteerd. Op die manier kun je een heel programma laten draaien door een module te importeren. Doen we nog wel.
  • &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25755644
    Helder en duidelijk uitgelegd. Complimenten.
    "There are no short cuts to any place worth going"
    - Beverly Sills
      zaterdag 26 maart 2005 @ 13:51:19 #36
    69357 R-Mon
    jong en dynamisch
    pi_25756300
    quote:
    Op zaterdag 26 maart 2005 13:20 schreef Pizza_Shooter het volgende:
    Helder en duidelijk uitgelegd. Complimenten.
    Dankjewel.
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25756469
    quote:
    Op zaterdag 26 maart 2005 13:51 schreef R-Mon het volgende:

    [..]

    Dankjewel.
    Overigens wel een vraagje: als je nou niet alles in de interpreter in wilt tikken, maar gewoon in crimson editor, moet je dan die .py bestanden steeds importeren, of kan dat ook anders?
    "There are no short cuts to any place worth going"
    - Beverly Sills
    pi_25756574
    quote:
    Op zaterdag 26 maart 2005 13:59 schreef Pizza_Shooter het volgende:

    [..]

    Overigens wel een vraagje: als je nou niet alles in de interpreter in wilt tikken, maar gewoon in crimson editor, moet je dan die .py bestanden steeds importeren, of kan dat ook anders?
    Heb al wat gevonden..

    Je kan in Crimson Editor zogenaamde 'User tools' instellen en dan kan je dus je bestand (test.py) in python.exe laten openen. Dat werkt wel goed eigenlijk.

    Of doe ik nu heel ingewikkeld?
    "There are no short cuts to any place worth going"
    - Beverly Sills
      zaterdag 26 maart 2005 @ 14:19:00 #39
    69357 R-Mon
    jong en dynamisch
    pi_25756829
    quote:
    Op zaterdag 26 maart 2005 14:05 schreef Pizza_Shooter het volgende:

    [..]

    Heb al wat gevonden..

    Je kan in Crimson Editor zogenaamde 'User tools' instellen en dan kan je dus je bestand (test.py) in python.exe laten openen. Dat werkt wel goed eigenlijk.

    Of doe ik nu heel ingewikkeld?
    Als het goed werkt, houden zo. Welke instellingen gebruik je? (wil ik ook )
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25756932
    Je kunt ook gewoon de IDLE (shell) openen van Python, vervolgens kies je nieuw, je krijgt dat een geavanceerder 'kladblok', druk op F5 - eventueel saven - en het *.py bestand voert zichzelf dan uit in de shell.
    Jammer genoeg komt dit topic nu pas, wat er tot nu toe is besproken heb ik al zelf uitgevogeld (icm met af en toe wat hulp van medestudenten en docent). Maar zodra de classes en de gui (Tkinter) erbij komen dan ben ik er absoluut bij
    pi_25757118
    quote:
    Op zaterdag 26 maart 2005 14:19 schreef R-Mon het volgende:

    [..]

    Als het goed werkt, houden zo. Welke instellingen gebruik je? (wil ik ook )
    Onder Tools -> Conf. user tools

    Menutext: Load in Python
    Command: C:\Python24\python.exe
    Argument: test.py

    En als hot key Ctrl + d ofzo. Werkt prima. Vergeet overigens niet 'Close on exit' uit te vinken..
    "There are no short cuts to any place worth going"
    - Beverly Sills
      zaterdag 26 maart 2005 @ 14:55:04 #42
    69357 R-Mon
    jong en dynamisch
    pi_25757511
    quote:
    Op zaterdag 26 maart 2005 14:33 schreef Pizza_Shooter het volgende:

    [..]

    Onder Tools -> Conf. user tools

    Menutext: Load in Python
    Command: C:\Python24\python.exe
    Argument: test.py

    En als hot key Ctrl + d ofzo. Werkt prima. Vergeet overigens niet 'Close on exit' uit te vinken..
    lukt niet
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25757695
    quote:
    Op zaterdag 26 maart 2005 14:55 schreef R-Mon het volgende:

    [..]

    lukt niet


    Heb je em zo ingesteld?
    "There are no short cuts to any place worth going"
    - Beverly Sills
    pi_25757764
    Kan trouwens nergens vinden hoe je 'tot de macht n' doet.

    Iemand enig idee, ^ werkt namelijk niet.
    "There are no short cuts to any place worth going"
    - Beverly Sills
    pi_25757861
    Is dat niet ** ?
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_25757886
    quote:
    Op zaterdag 26 maart 2005 15:10 schreef SuperRembo het volgende:
    Is dat niet ** ?
    Oh, dat zou kunnen, even testen..
    "There are no short cuts to any place worth going"
    - Beverly Sills
    pi_25757928
    quote:
    Op zaterdag 26 maart 2005 15:11 schreef Pizza_Shooter het volgende:

    [..]

    Oh, dat zou kunnen, even testen..
    Jep, dat werkt.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Rente berekenen

    bedrag = int(raw_input("Bedrag: "))
    aant_jaar = int(raw_input("Hoeveel jaar? "))

    rente = 1.03

    tot_bedrag = bedrag * (rente ** aant_jaar)
    print "Uw kapitaal bedraagt dan ongeveer ", tot_bedrag, "euro"
    "There are no short cuts to any place worth going"
    - Beverly Sills
      zaterdag 26 maart 2005 @ 15:14:55 #48
    69357 R-Mon
    jong en dynamisch
    pi_25757977
    quote:
    Op zaterdag 26 maart 2005 15:04 schreef Pizza_Shooter het volgende:

    [..]

    [afbeelding]

    Heb je em zo ingesteld?
    Ah ik snap het al. Ik had iets uitgebreiders moeten doen dan 2+2. De prompt die Crimson Editor opent is niet de interpreter, dus je kan niet "ff snel" wat doen. Maar hij doet het wel. Ik hou het toch liever bij de echte interpreter.

    En Ctrl+D wordt al gebruikt. Ctrl+1 is de default.
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25758088
    quote:
    Op zaterdag 26 maart 2005 15:11 schreef Pizza_Shooter het volgende:

    [..]

    Oh, dat zou kunnen, even testen..
    1
    2
    3
    4
    >>> 2**2**2**2**2
    20035299304068464649790723515602557504478254755697514192650169737108940595563114
    ...
    5337539755822087777506072339445587895905719156736L




    Ik heb toch ook maar ff python geinstalleerd

    [ Bericht 92% gewijzigd door SuperRembo op 26-03-2005 15:31:29 ]
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      zaterdag 26 maart 2005 @ 15:23:17 #50
    69357 R-Mon
    jong en dynamisch
    pi_25758145
    quote:
    Op zaterdag 26 maart 2005 15:20 schreef SuperRembo het volgende:

    [..]
    [ code verwijderd ]



    Ik heb toch ook maar ff python geinstalleerd
    Dude Kan je dat zo wel even weghalen?
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')