R-Mon | woensdag 23 maart 2005 @ 16:29 | |||||||||||||||||||||
![]() 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. ![]() ![]() 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? Aan de slag. ![]() | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 16:29 | |||||||||||||||||||||
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 ![]() 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:
Ja? Mooi! Python is goed geinstalleerd. 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:
en druk op Enter. Verbazingwekkend! En:
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:
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. | ||||||||||||||||||||||
Sander | woensdag 23 maart 2005 @ 16:42 | |||||||||||||||||||||
Leuk! Ik ga me vanavond lekker in Python verdiepen ![]() | ||||||||||||||||||||||
BaggerUser | woensdag 23 maart 2005 @ 17:14 | |||||||||||||||||||||
ik ga dit volgen ![]() | ||||||||||||||||||||||
Lucille | woensdag 23 maart 2005 @ 17:16 | |||||||||||||||||||||
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. | ||||||||||||||||||||||
Swetsenegger | woensdag 23 maart 2005 @ 17:17 | |||||||||||||||||||||
Tot nu toe lijkt het verdacht veel op basic ![]() | ||||||||||||||||||||||
BaggerUser | woensdag 23 maart 2005 @ 17:20 | |||||||||||||||||||||
oke ik ben klaar met deze les, ik wacht al op de volgende ![]() | ||||||||||||||||||||||
boyv | woensdag 23 maart 2005 @ 17:35 | |||||||||||||||||||||
tvp | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 17:42 | |||||||||||||||||||||
quote:Ben bezig. ![]() | ||||||||||||||||||||||
Stranger | woensdag 23 maart 2005 @ 17:49 | |||||||||||||||||||||
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. | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 18:00 | |||||||||||||||||||||
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. 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:
Dit moet je zo lezen: x wordt 5. Als je nu dit doet:
geeft Python de waarde van x terug. Tekst toewijzen doe je zo:
Zoals ik al heb gezegd, tekst tussen aanhalingstekens. Als je nu
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:
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.
Hierna: Meer rekenen met variabelen, datatypen, modules, if/else en uiteindelijk natuurlijk het echte werk ![]() | ||||||||||||||||||||||
Mendelevium | woensdag 23 maart 2005 @ 18:23 | |||||||||||||||||||||
Leuk python, daar werken wij bij ons op school ook mee... | ||||||||||||||||||||||
Swetsenegger | woensdag 23 maart 2005 @ 18:25 | |||||||||||||||||||||
ik zit meer te wachten op lussen en voorwardelijke functies ![]() | ||||||||||||||||||||||
SuperRembo | woensdag 23 maart 2005 @ 18:34 | |||||||||||||||||||||
quote:Er is dus geen multi-line comment? Dat is irritant. | ||||||||||||||||||||||
a3aan | woensdag 23 maart 2005 @ 18:46 | |||||||||||||||||||||
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 ] | ||||||||||||||||||||||
Mendelevium | woensdag 23 maart 2005 @ 18:51 | |||||||||||||||||||||
zeg een functie die het getal van fibonacci berekend van een variabele:
werkt dus ongeveer hetzelfde als een c++ functie... | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 19:14 | |||||||||||||||||||||
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.
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.
| ||||||||||||||||||||||
Swetsenegger | woensdag 23 maart 2005 @ 19:26 | |||||||||||||||||||||
quote: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 ![]() | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 19:32 | |||||||||||||||||||||
quote:Zo heten ze nou eenmaal. Maar goed, waarschijnlijk zal ik ze door elkaar gebruiken. ![]() | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 19:39 | |||||||||||||||||||||
We komen steeds verder. Weet je wat, laten we maar eens een functie maken. ![]() a3aan en Mendelevium hebben het al laten zien. Zelf functies maken. Yay! Het begin
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:
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:
Dan maken we even wat variabelen:
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:
Krijgen we terug: 12 34 56 Als er het echter zo doen:
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:
Probeer maar. | ||||||||||||||||||||||
Sander | woensdag 23 maart 2005 @ 20:20 | |||||||||||||||||||||
Whehe, ik had Python al voor winCVS, om op de CVS van Fok! te kunnen ![]() | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 20:34 | |||||||||||||||||||||
Swets! 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:
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:
Het resultaat (oftewel het ingetikte) kan je weer zetten in een variabele.
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!
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. ![]() | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 20:46 | |||||||||||||||||||||
Lukt het? | ||||||||||||||||||||||
Mendelevium | woensdag 23 maart 2005 @ 20:52 | |||||||||||||||||||||
als je een integer wilt inlezen kun je beter gewoon input() gebruiken ipv raw_input()... lijkt me... | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 20:58 | |||||||||||||||||||||
quote:input([prompt]) Equivalent to eval(raw_input(prompt)) Dankje, die kende ik nog niet. | ||||||||||||||||||||||
Tiemie | woensdag 23 maart 2005 @ 21:20 | |||||||||||||||||||||
erg interessant, python is vrij strict toch? (met inspringen e.d.) tvp | ||||||||||||||||||||||
R-Mon | woensdag 23 maart 2005 @ 21:25 | |||||||||||||||||||||
quote: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. | ||||||||||||||||||||||
Swetsenegger | woensdag 23 maart 2005 @ 21:29 | |||||||||||||||||||||
Leuk leuk, maar is er ook een grafische schil of draait alles in CL (net als C++)? | ||||||||||||||||||||||
R-Mon | donderdag 24 maart 2005 @ 12:46 | |||||||||||||||||||||
quote: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) | ||||||||||||||||||||||
Swetsenegger | donderdag 24 maart 2005 @ 13:36 | |||||||||||||||||||||
quote:Mooi voorbeeld... 404 ![]() | ||||||||||||||||||||||
SHERMAN | donderdag 24 maart 2005 @ 13:38 | |||||||||||||||||||||
http://blogtk.sourceforge.net/ ? | ||||||||||||||||||||||
R-Mon | donderdag 24 maart 2005 @ 13:48 | |||||||||||||||||||||
quote:Ja die dus ![]() | ||||||||||||||||||||||
R-Mon | donderdag 24 maart 2005 @ 13:59 | |||||||||||||||||||||
En toen kwam ik erachter dat ik nog een operator vergeten was. is not is niet gelijk aan 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.
Met de functie len() kan je: -de lengte van een string bepalen -het aantal items in een list bepalen Gebruik:
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:
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:
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.
Een array netjes afdrukken:
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.
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:
Je kan het ook met getallen doen, maar dan moet je ze wel omvormen naar een string:
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.
Meer over voorwaarden enz. staat op http://www.coolpython.nl/(...)07110000000000000000 Break kan je gebruiken om uit een lus te komen.
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. ![]() | ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 12:16 | |||||||||||||||||||||
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. ![]() Open de interpreter.
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 ![]() 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.)
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:
Nu kunnen we de functies fib() en fib2() aanroepen.
Als je de functie vaak wil gebruiken kan je de naam.naam afkorten door het in een variabele te stoppen:
Bepaalde dingen importeren Als je slechts een functie uit een module wil importeren:
Twee of meer:
Alle namen (functies, variabelen, enz):
Als je op deze manier hoef je niet meer de modulenaam aan te geven. Je fib() dus meteen aanroepen:
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. ![]() | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 13:20 | |||||||||||||||||||||
Helder en duidelijk uitgelegd. Complimenten. ![]() | ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 13:51 | |||||||||||||||||||||
quote:Dankjewel. ![]() | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 13:59 | |||||||||||||||||||||
quote: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? | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 14:05 | |||||||||||||||||||||
quote: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? ![]() | ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 14:19 | |||||||||||||||||||||
quote:Als het goed werkt, houden zo. Welke instellingen gebruik je? (wil ik ook ![]() | ||||||||||||||||||||||
BarteS | zaterdag 26 maart 2005 @ 14:23 | |||||||||||||||||||||
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 ![]() | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 14:33 | |||||||||||||||||||||
quote: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.. | ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 14:55 | |||||||||||||||||||||
quote:lukt niet ![]() | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 15:04 | |||||||||||||||||||||
quote: Heb je em zo ingesteld? | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 15:06 | |||||||||||||||||||||
Kan trouwens nergens vinden hoe je 'tot de macht n' doet. ![]() Iemand enig idee, ^ werkt namelijk niet. | ||||||||||||||||||||||
SuperRembo | zaterdag 26 maart 2005 @ 15:10 | |||||||||||||||||||||
Is dat niet ** ? | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 15:11 | |||||||||||||||||||||
quote:Oh, dat zou kunnen, even testen.. | ||||||||||||||||||||||
Pizza_Shooter | zaterdag 26 maart 2005 @ 15:13 | |||||||||||||||||||||
quote:Jep, dat werkt. ![]()
| ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 15:14 | |||||||||||||||||||||
quote:Ah ik snap het al. Ik had iets uitgebreiders moeten doen dan 2+2. ![]() En Ctrl+D wordt al gebruikt. Ctrl+1 is de default. ![]() | ||||||||||||||||||||||
SuperRembo | zaterdag 26 maart 2005 @ 15:20 | |||||||||||||||||||||
quote:
![]() Ik heb toch ook maar ff python geinstalleerd ![]() [ Bericht 92% gewijzigd door SuperRembo op 26-03-2005 15:31:29 ] | ||||||||||||||||||||||
R-Mon | zaterdag 26 maart 2005 @ 15:23 | |||||||||||||||||||||
quote:Dude ![]() | ||||||||||||||||||||||
SuperRembo | zaterdag 26 maart 2005 @ 15:31 | |||||||||||||||||||||
quote:k dan. | ||||||||||||||||||||||
F.U.B.A.R | zaterdag 26 maart 2005 @ 15:42 | |||||||||||||||||||||
Tvp | ||||||||||||||||||||||
R-Mon | dinsdag 29 maart 2005 @ 15:07 | |||||||||||||||||||||
De module pickle bevat functies om Python dingen heel makkelijk weg te schrijven naar een bestand. Daarna kunnen ze net zo makkelijk weer unpickled worden. The following types can be pickled: * None, True, and False * integers, long integers, floating point numbers, complex numbers * normal and Unicode strings * tuples, lists, sets, and dictionaries containing only picklable objects * functions defined at the top level of a module * built-in functions defined at the top level of a module * classes that are defined at the top level of a module * instances of such classes whose __dict__ or __setstate__() is picklable Onpicklebare objecten zullen een PicklingError teruggeven. ( ![]() ![]() Laten we dan maar wat picklen.
Ho, wacht, even wat anders. Eerst maar een bestand leren openen. De functie open() geeft een file- object terug, en wordt meestal gebruikt met twee argumenten: "open(filenaam, modus)". Voor de duidelijkheid, open() zit niet in pickle maar standaard in een kale Python. De modus waarop je een bestand opent bepaalt wat je ermee kan doen. r alleen lezen; default w alleen schrijven (als er al een bestand met de gegeven naam aanwezig is, zal dat overschreven worden; als er nog geen bestand bestaat wordt het gemaakt) a append: wat je naar het bestand schrijft zal achteraan worden gezet r+ lezen en schrijven Een bestand openen en sluiten (aangenomen dat het bestand bestaat):
close() is een methode van bestandsobjecten. Een functie die je erachter moet plakken dus. Gil als je dit niet snapt. Nu verder met picklen. Picklen doe je zo. Eerst gaan we wat picklen, en daarna weer unpicklen.
Als je nu in je Python-map kijkt zie je een bestand pickle.txt staan. Als je hem opent kan je je tekst er nog wel uithalen, maar een staan ook een zooi tekens omheen. Niet aankomen! ![]() Tijd om het te gaan unpicklen.
En als het goed is krijg je dan je zinnetje weer voor je neus. Je kan, uiteraard, weer het resultaat van load() in een variabele zetten.
![]() | ||||||||||||||||||||||
Swetsenegger | vrijdag 25 november 2005 @ 21:22 | |||||||||||||||||||||
Enorme rotschop. Helaas is dit topic een beetje stil gevallen. Nu heb ik vandaag python geinstalleerd en ik wil er eens mee aan de slag. Eerste korte vraag. Ondanks dat python een interpretated taal is kan ik wel executables maken met python? [ Bericht 28% gewijzigd door Swetsenegger op 25-11-2005 21:27:29 ] | ||||||||||||||||||||||
R-Mon | zaterdag 26 november 2005 @ 15:21 | |||||||||||||||||||||
quote:http://www.py2exe.org/ | ||||||||||||||||||||||
MrBean | woensdag 12 april 2006 @ 11:46 | |||||||||||||||||||||
ah ik zocht dit topic al.
Wat is er precies verkeerd aan deze reguliere expressie? of kan hij niet zo goed tegen die aanhalingstekens? | ||||||||||||||||||||||
Captain_Le_Chuck | woensdag 12 april 2006 @ 12:16 | |||||||||||||||||||||
Even een tvp. Ziet er leuk uit, van de week Python maar uit proberen ![]() | ||||||||||||||||||||||
MrBean | woensdag 12 april 2006 @ 12:39 | |||||||||||||||||||||
quote:Heb het antwoord al, het patroon kwam helemaal niet in mijn lijst voor, nogal wiedes dat het verkeerd ging. ![]() | ||||||||||||||||||||||
Sheepcidus | maandag 18 december 2006 @ 22:38 | |||||||||||||||||||||
Ik ben nu met python aan het klooien. Dus ff een grote kick. Nu wil ik met behulp van een raw_input een dictionary updaten met elk value: 'woord' een eigen key: x.
Tot en met b werkt het maar als ik de dictionary a probeer te updaten met dictionary b werkt het niet en geeft die bij print a none aan. | ||||||||||||||||||||||
Sheepcidus | dinsdag 19 december 2006 @ 11:57 | |||||||||||||||||||||
Ok zelf oplossing gevonden mbv iemand anders. ![]()
|