abonnement Unibet Coolblue Bitvavo
  woensdag 23 maart 2005 @ 16:29:28 #1
69357 R-Mon
jong en dynamisch
pi_25686520


Ik ben pasgeleden met Python begonnen en ik vind het een leuke programmeertaal. Hier dus een Python-topic.
- R-Mon

Python?
Python is een interpreted, interactive, object-oriented programmeertaal. Je kan er dus programma's mee maken (no shit!). Het is uitgevonden door Nederlanders in Amsterdam. Interpreted betekent dat je programma's alleen kan gebruiken via een interpreter. Hierdoor kan je programma's minder handig verspreiden, maar zijn ze wel op de meeste platformen te gebruiken. Ook werkt het op de commandline. Er zijn wel grafische mogelijkheden, maar zover ben ik nog niet. Op de Python homepage (zie Linkjes) staat meer informatie. Leuk detail is dat de naam Python komt van Monty Python's Flying Circus. Sommige functies hebben hier ook hun naam van (pickle) en je wordt aangemoedigd in je documentatie te refereren aan Monty Python sketches.

Is het moeilijk?
Dat valt wel mee. Python wordt gezien als de instaptaal waarna je verder kan gaan naar C(++). Als je al ervaring hebt met een scripttaal zoals PHP is de overstap naar Python heel klein, heb ik gemerkt.

En waar gebruiken ze Python dan zoal?
Bij Google bijvoorbeeld. "Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language." said Peter Norvig, director of search quality at Google, Inc.

Links
http://www.python.org - De Python homepage.
http://www.coolpython.nl/tutorials/tut/tut.html - Nederlandse beginnersgids. Redelijk simpel geschreven, leuk om te lezen.
http://www.python.org/doc/faq/ - Frequently Asked Questions.

Wat hebben we nodig?
  • Een interpreter
  • Een tekstverwerker. Op http://www.python.org/moin/PythonEditors staat een lijst met tekstverwerkers die de Python syntax ondersteunen. Ikzelf gebruik Crimson Editor ( http://www.crimsoneditor.com ).

    Aan de slag.
  • <tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
      woensdag 23 maart 2005 @ 16:29:51 #2
    69357 R-Mon
    jong en dynamisch
    pi_25686529
  • Python installeren.
    Ga naar de Python homepage ( http://www.python.org ). Bovenin staat een link Download. Er staan een paar versies voor verschillende OS'sen. Ik ga ervanuit dat je Windows draait. 2.4 is de laatste versie, dus kiezen we die. Er staan twee Windows versies. Kies Python 2.4 Windows installer (Windows binary -- does not include source) (tenzij je Itanium hebt natuurlijk). Als de download klaar is, klik je erop om het te installeren. De standaard map waar het naartoe gaat is C:python24, ik adviseer dat zo te laten.

    Geinstalleerd, en verder?
    Ga naar de map waar je Python hebt geinstalleerd, en start python.exe op. Als het goed is krijg je een zwart schermpje met deze tekst:
    1
    2
    3
    Python 2.4 blablabla
    Type help, copyright, credits or license blablabla
    >>>

    Ja? Mooi! Python is goed geinstalleerd.

  • De interpreter
    Je kan Python commando's rechtstreeks in de interpreter intypen. Dit gaan we even oefenen. Nieuwe commando's tik je in op een regel die begint met >>> en je geeft ze door met een druk op Enter.
    Allereerst gaan we rekenen. De interpreter kan worden gebruikt als uitgebreide rekenmachine. Tik maar eens:
    12+2

    en druk op Enter. Verbazingwekkend! En:
    15*5

    Oooooooooh. Daar komt 4 en 25 uit. Als rekentekens kan je de vaakgebruikte + - * / gebruiken.

    NOOT: Vanaf nu zet ik >>> voor de commando's, deze moet je niet zelf intikken. De interpreter geeft ze als het goed is. En ik ga ervanuit dat je nu snapt dat je op Enter moet drukken na het intikken.

    Dat waren getallen. Nu wat tekst. Hiervoor gebruiken we de functie print. Tik maar eens in:
    1>>> print "Hallo wereld"

    Python zal dan Hallo wereld zeggen. Weer wat geleerd: Als je tekst invoert, moet dat tussen aanhalingstekens. Aanhalingstekens printen hebben we het later wel over. Als je een getal invoert tussen aanhalingstekens zal die worden gezien als tekst, je kan er dan niet direct mee rekenen.

    Ik ga even bedenken wat ik verder zal laten zien. Ga maar lekker rekenen of de beginnersgidsdoorlezen. Misschien zometeen een nieuw deel.
  • <tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
      woensdag 23 maart 2005 @ 16:42:11 #3
    17137 Sander
    Nerds do it rarely
    pi_25686806
    Leuk! Ik ga me vanavond lekker in Python verdiepen .
    pi_25687483
    ik ga dit volgen
    De enige echte BaggerUser!
    Riemen
    fiets kopen
    pi_25687520
    Al jaren wordt Python gebruikt door bijvoorbeeld RedHat voor hun grafische interfaces bij allerlei systeem tools. Dat is denk ik ook de sterke kant van Python, gescripte GUIs die naadloos aansluiten op de script syntax, vergelijkbaar met Tcl/Tk, maar dan net wat beter.
    Beter een baas onder je duim, dan tien bovenop
    Trekt bij warm weer een poncho aan
      FOK!-Schrikkelbaas woensdag 23 maart 2005 @ 17:17:17 #6
    1972 Swetsenegger
    Egocentrische Narcist
    pi_25687552
    Tot nu toe lijkt het verdacht veel op basic
    pi_25687660
    oke ik ben klaar met deze les, ik wacht al op de volgende
    De enige echte BaggerUser!
    Riemen
    fiets kopen
    pi_25688054
    tvp
      woensdag 23 maart 2005 @ 17:42:31 #9
    69357 R-Mon
    jong en dynamisch
    pi_25688226
    quote:
    Op woensdag 23 maart 2005 17:20 schreef BaggerUser het volgende:
    oke ik ben klaar met deze les, ik wacht al op de volgende
    Ben bezig.
    <tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
    pi_25688385
    Nog een stukje fijne literatuur, het boek 'how to think like a computer scientist'

    http://www.ibiblio.org/obp/thinkCSpy/

    Oh ja, dit is natuurlijk gewoon een ordinaire tvp.
      woensdag 23 maart 2005 @ 18:00:04 #11
    69357 R-Mon
    jong en dynamisch
    pi_25688704
  • Commentaar
    Commentaar kan heel handig zijn om tussen de code door uit te leggen wat het doet. Commentaar start je door een hekje (#) te plaatsen. Dit kan aan het einde van een regel code, of op een nieuwe regel. Alles wat na het hekje komt op dezelfde regel wordt genegeerd door de interpreter.

  • Variabelen
    Vrijwel elke script-/programmeertaal heeft variabelen. Voor nieuwelingen: Variabelen zijn objecten waar je waardes in kan opslaan, om later te gebruiken.
    De variabelen in Python werken volgens mij hetzelfde als in Javascript. Het zijn termen die uit een stuk bestaan. "x" is een geldige variabele, maar "gebruiker_nummer_1337" ook. Ze mogen beginnen met een underscore (_) en letters maar niet met een getal. Ook mag er geen normaal streepje (-) in voorkomen omdat die wordt gezien als een minteken.

    Een waarde toekennen
    Een waarde toekennen aan een variabele is heel makkelijk. Je hoeft niet eerst aan te geven dat je een variabele gaat gebruiken. Stel je wil x de waarde 5 geven, dan doe je dat zo:
    1>>> x=5

    Dit moet je zo lezen: x wordt 5. Als je nu dit doet:
    1>>> x

    geeft Python de waarde van x terug. Tekst toewijzen doe je zo:
    1>>> y="hallo wereld"

    Zoals ik al heb gezegd, tekst tussen aanhalingstekens. Als je nu
    1>>> y

    invoert geeft Python "hallo wereld" terug. Op deze manier een variabele teruggeven is eigenlijk alleen maar handig in de interpreter. Als je het later in een echt programma wilt doen zou ik het zo doen:
    1>>> print x

    Of welke variabele dan ook.

    Een resultaat in een variabele stoppen
    Hier worden variabelen het meeste voor gebruikt. Als je een functie uitvoert, kan je in plaats van het restultaat direct weer te geven het opslaan in een variabele. Laten we een simpele functie gebruiken, zoals 7+3. Ik zal ook het commentaar gebruiken.
    1
    2
    >>> x=7+3    # de uitkomst van de functie 7+3 wordt opgeslagen in x
    >>> print x  # de waarde van x wordt teruggegeven


    Hierna: Meer rekenen met variabelen, datatypen, modules, if/else en uiteindelijk natuurlijk het echte werk [/note to self]
  • <tsjsieb> maarja, jij bent ook gewoon cool R-Mon :p
    pi_25689242
    Leuk python, daar werken wij bij ons op school ook mee...
    You can't blame yourself for what gorilla's did
      FOK!-Schrikkelbaas woensdag 23 maart 2005 @ 18:25:33 #13
    1972 Swetsenegger
    Egocentrische Narcist
    pi_25689282
    ik zit meer te wachten op lussen en voorwardelijke functies
    pi_25689451
    quote:
    Op woensdag 23 maart 2005 18:00 schreef R-Mon het volgende:
  • Commentaar
    Commentaar kan heel handig zijn om tussen de code door uit te leggen wat het doet. Commentaar start je door een hekje (#) te plaatsen. Dit kan aan het einde van een regel code, of op een nieuwe regel. Alles wat na het hekje komt op dezelfde regel wordt genegeerd door de interpreter.
  • Er is dus geen multi-line comment? Dat is irritant.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      woensdag 23 maart 2005 @ 18:46:16 #15
    36521 a3aan
    kan gebeuren
    pi_25689721
    Leuk! een python topic. Tegenwoording veel bezig met NLP(Natural Language Processing) in python op school. Misschien dat ik af en toe wat hulp kan bieden..

    lussen:

    for i in range(10): doe iets 10 keer (range(10) = 0,1,2,3,.....,9)
    while i < 10: zelfde eigenlijk, alleen moet je zelf de i ophogen
    for i in list: iets voor alle items in een lijst doen

    lijsten:

    lijst = [1,2,3,4]
    lijst[0] geeft 1
    lijst[0:2] geeft [1,2]
    lijst[-1] geeft 4

    lijsten zijn dus zowel van voren als van achteren te benaderen! erg handig!

    dictionary's:

    dictionary's hebben { } ' s om zich heen

    d={"hoi":2,"doei":1} waarbij hoi en doei de keys zijn, 2 en 1 de values.

    d["hoi"] geeft 2.

    d.keys() geeft een lijst: ["hoi","doei"]
    d.values() geeft een lijst: [2,1]

    Zelf werk ik heel erg veel met dictionary om frequenties van sequenties van woorden in een grote tekst te tellen en op deze manier statistiek over natuuurlijke taal te krijgen. Voorbeeldtoepassing van deze statistiek: spellingscorrectie (context afhankelijk). Maargoed ik dwaal af.

    functies definieer je heel simpel in python:

    def functie():

    als je bepaalde opdrachten gewoon in een .py file gooit, zonder def te gebruiken, worden deze gewoon uitgevoerd wanneer er op f5 gedrukt wordt. Als je een functie wilt aanroepen, druk je eerst op f5 (je komt weer in de shell) en je doet gewoon simpelweg: functie(eventuele argumenten) en enter en python voert het uit.

    Hoop dat men hier iets aan heeft, ben niet geboren om tutorials te schrijven.

    [ Bericht 0% gewijzigd door a3aan op 23-03-2005 18:55:24 ]
    a ( 1.5 x 2 ) a a n
    pi_25689848
    zeg een functie die het getal van fibonacci berekend van een variabele:
    1
    2
    3
    4
    5
    def fib(x):
      if n==1 or n==2:
        return 1
      else:
        return fib(x-1) + fib(x-2)


    werkt dus ongeveer hetzelfde als een c++ functie...
    You can't blame yourself for what gorilla's did
      woensdag 23 maart 2005 @ 19:14:56 #17
    69357 R-Mon
    jong en dynamisch
    pi_25690445
    Bedankt voor de bijdrages, maar ik ga het wel herhalen.

    Nog een kleine toevoeging aan de namen van variabelen:
    _ als variabele heeft de waarde van de laatst afgedrukte expressie! Dus je kan niet zelf een variabele _ noemen.

    Verder met vars
    Okee, weer een stukje verder. Als je een getal in een variabele hebt gezet, kan je daar ook

    mee rekenen. Kijk maar. Oja, commentaar hoef je niet over te typen.
    1
    2
    3
    4
    >>> x=10
    >>> y=5
    >>> x*y/2   # 10 keer 5 gedeeld door 2 -> 25
    >>> x/y*10 # 10 gedeeld door 5 keer 10 -> 20


  • Datatypen
    a3aan heeft er al een paar laten zien, de verschillende types data in Python. De types: Strings, getallen, lists, dictionaries en tuples.

    Strings: Tekst, of tekens die als tekst behandeld moeten worden. Strings worden tussen aanhalingstekens gezet.

    Getallen: Meerdere varianten. Integer (gehele getallen), float (kommagetal), complexe getallen (standaard twee getallen achter de komma. Voor een uitgebreidere uitleg zie http://www.coolpython.nl/(...)05110000000000000000

    Lists: In PHP aangeduid als array. Niets anders dan een lijst met waardes. String uiteraard weer tussen aanhalingstekens. a3aan heeft het voorbeeld, en hoe je waardes kan oproepen.

    Dictionaries: Associatieve arrays. De gids geeft een telefoonboek als voorbeeld: {"john":5551234, "joe":5554321} Je kan steeds de tweede waarde oproepen door de eerste te geven, zie a3aan weer.

    Tuples: Vage dingen. De gids zegt dat je ze kan gebruiken voor x, y coordinaten en database records, maar ik snap niet waarom je daar geen lists voor kan gebruiken. Het gebruik: (234, "hoi") Normale haakjes er omheen dus.

    Al deze dingen zijn in variabelen te stoppen.
    1
    2
    3
    4
    5
    a = "hoi"
    b = 4
    c = [734, "hallo"]
    d = {"python":"slang", "php":5327}
    e = (25, 54)
  • &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
      FOK!-Schrikkelbaas woensdag 23 maart 2005 @ 19:26:40 #18
    1972 Swetsenegger
    Egocentrische Narcist
    pi_25690733
    quote:
    Op woensdag 23 maart 2005 19:14 schreef R-Mon het volgende:
    verhaal
    Dat vind ik al gepijpzeik.
    Die dingen heten gewoon strings, arrays en associatieve array's
    Noem ze niet lijst en dictionary. Maar das een sidenote. functioneel is het hetzelfde
      woensdag 23 maart 2005 @ 19:32:01 #19
    69357 R-Mon
    jong en dynamisch
    pi_25690850
    quote:
    Op woensdag 23 maart 2005 19:26 schreef Swetsenegger het volgende:

    [..]

    Dat vind ik al gepijpzeik.
    Die dingen heten gewoon strings, arrays en associatieve array's
    Noem ze niet lijst en dictionary. Maar das een sidenote. functioneel is het hetzelfde
    Zo heten ze nou eenmaal. Maar goed, waarschijnlijk zal ik ze door elkaar gebruiken.
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
      woensdag 23 maart 2005 @ 19:39:41 #20
    69357 R-Mon
    jong en dynamisch
    pi_25691041
    We komen steeds verder. Weet je wat, laten we maar eens een functie maken.

  • Functies definieren
    a3aan en Mendelevium hebben het al laten zien. Zelf functies maken. Yay!

    Het begin
    1>>> def functienaam():

    def geeft aan dat we zelf een functie gaan maken. De functienaam mag je zelf bedenken. De haakjes zijn nodig, als je variabelen in wil voeren zet je die ertussen. De dubbele punt geeft aan dat er een vervolg komt.

    Natuurlijk wil je wel dat je functie wat doet. Tik me maar na:
    1
    2
    3
    4
    >>> def hallo():
    ...    print "hallo wereld"
    ...
    >>> hallo()

    Even uitleggen. Zoals de >>> een nieuw commando aangeven, geven de ... een vervolg aan. In dit geval het vervolg op def. Ook springt de regel in na de dubbele punt. Dit is erg belangrijk, omdat de interpreter anders niet begrijpt dat je verder gaat. Je kan inspringen door op TAB te drukken.
    Dan, als de functie gedefinieerd is, wil je hem natuurlijk uitvoeren. Omdat de functie hallo heet, tikken we hallo() in. Tadaa! Hallo wereld.

    Variabelen doorgeven
    Soms wil je een variabele doorgeven aan een functie. Zoals ik al zei, gaan die tussen de haakjes.
    De variabelen die binnen een functie worden gebruikt hebben niets te maken met de variabelen erbuiten. Je kan bepalen welke waardes doorgegeven worden door rekening te houden met de volgorde. Klinkt wazig, ik zal het laten zien.

    We maken een functie:
    1
    2
    3
    >>> def voorbeeld(x, y, z):
    ...    print x, y, z
    ... 


    Dan maken we even wat variabelen:
    1>>> a, b, c=12, 34, 56


    Zoals je ziet doe ik dit allemaal op een regel. Bij uitvoer zorgt ", " voor een spatie tussen de variabele en het volgende object. Komen we misschien nog op terug.

    Als we dan de functie zo aanroepen:
    1>>> voorbeeld(a, b, c)


    Krijgen we terug: 12 34 56

    Als er het echter zo doen:
    1>>> voorbeeld(c, b, a)


    Krijgen we: 56 34 12

    De eerste meegegeven functie wordt dus ingevuld in (in dit geval) x, de tweede in y enz. Volgorde. Je kan ook waardes direct meegeven, bijvoorbeeld:
    1>>> voorbeeld(b, 95, a)


    Probeer maar.
  • &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
      woensdag 23 maart 2005 @ 20:20:41 #21
    17137 Sander
    Nerds do it rarely
    pi_25692107
    Whehe, ik had Python al voor winCVS, om op de CVS van Fok! te kunnen
      woensdag 23 maart 2005 @ 20:34:59 #22
    69357 R-Mon
    jong en dynamisch
    pi_25692520
    Swets!

  • If en else
    Python kent zoals andere talen de if en else statements. Hiermee kan je iets laten doen als er aan een bepaalde voorwaarde voldaan wordt.

    De statements hebben deze vorm:
    1
    2
    3
    4
    5
    6
    >>> if voorwaarden:
    ...    doe dit
    ... elif anderevoorwaarden:
    ...    doe dat
    ... else:
    ...    doe iets anders


    De if is altijd de eerste. Hier kan je voorwaarden meegeven aan welke moeten voldaan. Als er niet aan de voorwaarden wordt voldaan, gaan Python door naar de volgende statement als die er is. Een elif (else if) heeft ook voorwaarden waaraan voldaan moeten worden. Als er aan geen van de voorwaarden voldaan wordt worden de opdrachten bij de else statement uitgevoerd.

    Voorwaarden
    Deze kennen operators en booleans.
    Operators:
    == gelijk aan, je kan ook is gebruiken
    > groter dan
    < kleiner dan
    >= groter of gelijk aan
    <= kleiner of gelijk aan
    in Hiermee kan je bepalen of een waarde voorkomt in een array (list, tuple, dictionaries)

    Tussendoor ga ik even een nieuwe functie introduceren. Maak kennis met raw_input(). Hiermee kan je de gebruiker vragen om invoer. Er moet een vraag meegegeven worden. Om het netjes eruit te laten zien, kan je aan het eind van de vraag een spatie zetten. Voorbeeld:
    1>>> raw_input("Hoe heet je? ") # let op de spatie


    Het resultaat (oftewel het ingetikte) kan je weer zetten in een variabele.
    1
    2
    >>> antwoord = raw_input("Hoe heet je? ")
    >>> print antwoord


    De functie heet niet voor niets raw_input. De gebruiker kan zowel strings als getallen invoeren. Laten we eens controleren wat de gebruiker invoert. Goed opletten!
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> x = int(raw_input("Voer een integer in: "))
    >>> if x < 0:
    ...      x = 0
    ...      print 'Negatief getal omgezet naar nul'
    ... elif x == 0:
    ...      print 'Nul'
    ... elif x == 1:
    ...      print 'Enkel'
    ... else:
    ...      print 'Meer'
    ...


    Weer heb ik wat nieuws, de functie int(). Hiermee zet je de meegegeven waarde (in dit geval het resultaat van de raw_input, die gewoon tussen de haakjes van de int() is geplaatst) om in een heel getal (integer). Als de omzetting lukt geeft de functie True, als het niet lukt False een misschien zelfs een foutmelding.
    Naast int() zijn er nog str() voor strings, float() voor kommagetallen, abs() voor absolute getallen en vast nog een paar.

    True en False
    ...schrijf je in Python met een hoofdletter. Geef maar een kik als je true en false niet snapt.
  • &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
      woensdag 23 maart 2005 @ 20:46:24 #23
    69357 R-Mon
    jong en dynamisch
    pi_25692835
    Lukt het?
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    pi_25692984
    als je een integer wilt inlezen kun je beter gewoon input() gebruiken ipv raw_input()... lijkt me...
    You can't blame yourself for what gorilla's did
      woensdag 23 maart 2005 @ 20:58:18 #25
    69357 R-Mon
    jong en dynamisch
    pi_25693149
    quote:
    Op woensdag 23 maart 2005 20:52 schreef Mendelevium het volgende:
    als je een integer wilt inlezen kun je beter gewoon input() gebruiken ipv raw_input()... lijkt me...
    input([prompt])
    Equivalent to eval(raw_input(prompt))

    Dankje, die kende ik nog niet.
    &lt;tsjsieb&gt; maarja, jij bent ook gewoon cool R-Mon :p
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')