FOAD | Zo. | 17:36 |
---|---|---|
FOAD | ik zit al klaar. | 17:36 |
SanderM | Avoin | 18:14 |
SanderM | Avond | 18:14 |
hajour | hai all | 18:14 |
StefandeVries | hallo | 18:15 |
exalt | stttt... heb begrepen dat we hier niet mogen praten | 18:16 |
SanderM | De les moet nog beginnen? Was even in de warrie vanwege CET tijd? | 18:16 |
leoquant | hoi exalt | 18:16 |
exalt | haha hoi leoquant | 18:17 |
dimi77 | goede avond | 18:17 |
leoquant | 19.30 | 18:17 |
leoquant | hoi dimi77 | 18:17 |
SanderM | Ik ben op tijd dus :) gelukkig was vorige keer vet te laat | 18:18 |
exalt | ik ga misschien wat eerder weg vandaag , dat licht aan wat variabelen | 18:18 |
FOAD | Dat mag niet, exalt. | 18:18 |
FOAD | Tenzij je een briefje van je moeder hebt. | 18:18 |
exalt | jammer. | 18:18 |
dimi77 | :-D | 18:18 |
FOAD | Gelukkig gaat het vanavond over variabelen, dus dat komt goed uit. | 18:20 |
FOAD | Denk ik. | 18:20 |
Ronnie | heeft iedereen flink gestudeerd op het materiaal van vorige les? | 18:21 |
Oer | avondjes allen | 18:21 |
FOAD | Absoluut, Ronnie. | 18:21 |
FOAD | Het was taaie materie, maar ik denk dat ik het begrijp. | 18:21 |
FOAD | Dag Oer. | 18:21 |
dimi77 | zeker Ronnie | 18:22 |
Ronnie | heel goed, beide | 18:22 |
dimi77 | goede avond Oer | 18:22 |
leoquant | ubuntu-nl-mwanzo is open | 18:23 |
leoquant | hier volgt zo de les | 18:23 |
leoquant | commandoline, klaar? | 18:29 |
commandoline | leoquant: ja | 18:30 |
leoquant | RawChid, kiwinote Ronnie StefandeVries ok? | 18:30 |
kiwinote | ja | 18:30 |
StefandeVries | Zeker | 18:30 |
commandoline | ok, kunnen we beginnen, leoquant? | 18:30 |
leoquant | yep! | 18:30 |
commandoline | ok, welkom dan allemaal bij de tweede les Python! | 18:31 |
commandoline | ik heb vorige keer een opdrachtje gegeven aan het eind van de les. | 18:31 |
commandoline | http://paste.ubuntu.com/559992/ | 18:31 |
Ronnie | ben er net weer | 18:32 |
commandoline | is een mogelijke uitwerking | 18:32 |
commandoline | ik zal even uitleggen wat er gebeurd | 18:32 |
commandoline | op de 1e regel wordt m.b.v. de input()-functie aan de gebruiker gevraagd om een nummer in te voeren | 18:32 |
commandoline | dat nummer wordt opgeslagen in de variabele nummer | 18:33 |
commandoline | op de volgende regel wordt dat nummer met 2 vermenigvuldigt, en de uitkomst wordt opgeslagen in de variabele uitkomst | 18:33 |
commandoline | ten slotte wordt het resultaat netjes weergegeven op het scherm m.b.v. 'print' | 18:33 |
commandoline | is er iemand die nu nog vragen heeft over de opdracht? | 18:34 |
commandoline | ok, ik zie zo niks, dus dan wordt het tijd om verder te gaan. | 18:34 |
commandoline | de vorige keer hebben we alle commando's in de zogenaamde interactieve python shell ingevoerd | 18:35 |
commandoline | dat betekent dat ieder commando dat je invoert, direct wordt uitgevoerd. | 18:35 |
commandoline | bij een normaal programma is dat niet handig | 18:35 |
commandoline | om dat probleem op te lossen, kun je je programma opslaan in een bestand. | 18:36 |
commandoline | Ik ga hier uit van ubuntu i.c.m. de standaard meegeleverde tekst-editor, maar het is mogelijk om iets soortgelijks te doen met vrijwel iedere teksteditor en ieder besturingssysteem | 18:36 |
commandoline | kies Toepassingen > Hulpmiddelen > Teksteditor | 18:37 |
commandoline | je typt in het bestand een programma dat we al eerder hebben gezien: | 18:38 |
commandoline | print "Hallo Ubuntero's!" | 18:38 |
commandoline | daarna kies je: Bestand > Opslaan | 18:38 |
commandoline | je kiest een locatie om het bestand op op te slaan, bijv. het Bureaublad | 18:39 |
commandoline | (daar ga ik vanuit bij dit voorbeeld) | 18:39 |
commandoline | achter 'Naam: ' typ je in: | 18:39 |
commandoline | hallo.py | 18:39 |
commandoline | het stukje 'hallo' is zelfgekozen, de extensie .py is verplicht. | 18:39 |
commandoline | als je het bestand hebt opgeslagen, wordt het tijd om de terminal weer te starten | 18:40 |
commandoline | (Toepassingen > Hulpmiddelen > Terminalvenster) | 18:40 |
commandoline | in de terminal ga je vervolgens naar de locatie waar je het bestand hebt opgeslagen, in ons voorbeeld gaat dat via het commando | 18:40 |
commandoline | cd ~/Bureaublad | 18:41 |
commandoline | lukt het tot zover? | 18:41 |
leoquant | ja | 18:41 |
commandoline | goed, dan gaan we verder | 18:41 |
commandoline | typ nu in: | 18:41 |
commandoline | python hallo.py | 18:42 |
commandoline | je zult zien dat het programma dat je eerder hebt ingevoerd, uitgevoerd wordt :) | 18:42 |
commandoline | Je kan nu ook zonder problemen het programma nog een keer draaien: | 18:43 |
commandoline | gewoon een kwestie van het commando 'python bestandsnaam.py' herhalen | 18:43 |
leoquant | ok | 18:44 |
commandoline | Dit maakt het mogelijk om geavanceerdere programma's te schrijven tot nu toe | 18:44 |
commandoline | deze les wil ik met jullie een programma maken dat ook in de praktijk nuttig is | 18:44 |
commandoline | een rekenmachine | 18:45 |
commandoline | het maken van dit script gaat waarschijnlijk langere tijd duren. | 18:45 |
commandoline | en ik wil dat jullie mee kunnen kijken | 18:45 |
commandoline | daarom heb ik een bestand online gezet. | 18:46 |
commandoline | http://piratepad.net/ep/pad/view/ro.0i32sfJWAlx/latest | 18:46 |
commandoline | jullie kunnen door op die link te klikken, live meekijken met wat ik typ. | 18:46 |
leoquant | ik zie de tekst idd | 18:47 |
leoquant | yep | 18:47 |
commandoline | Goed, de eerste vraag is nu, welke commando's we allemaal achter elkaar moeten zetten om zo'n rekenmachine te bouwen. | 18:48 |
commandoline | ik heb ondertussen een lijstje toegevoegd in het document, lijkt iedereen dit logisch? | 18:50 |
commandoline | Om te antwoorden op de opmerking van FOAD in de chat: | 18:50 |
commandoline | het lijkt ingewikkeld, maar (vrijwel) alle dingen die ik hier heb opgenoemd kunnen jullie al schrijven. | 18:51 |
leoquant | lets go | 18:51 |
commandoline | ik heb nu voor de beschrijving haakjes gezet. | 18:51 |
commandoline | eh, hekjes :P | 18:51 |
commandoline | hekjes betekenen voor python dat de rest van de regel genegeerd kan worden | 18:52 |
commandoline | Goed, tijd om de eerste regel code te schrijven. | 18:52 |
commandoline | we moeten een welkomsboodschap tonen, iemand enig idee hoe we dat kunnen doen? | 18:52 |
commandoline | Tjibba, ja, klopt | 18:53 |
leoquant | Tjibba> print hallo? | 18:53 |
commandoline | (als je de haakjes toevoegd) | 18:53 |
commandoline | StefandeVries: die vindt ik nog mooier | 18:53 |
commandoline | goed, volgende stap | 18:54 |
commandoline | een menu weergeven | 18:54 |
commandoline | eerst maar eens de opties tonen die de gebruiker heeft | 18:54 |
commandoline | hmm, nu moeten we nog wat toevoegen zodat de gebruiker daadwerkelijk zijn/haar keuze kan maken | 18:55 |
commandoline | m.a.w., we moeten de gebruiker om invoer vragen | 18:55 |
commandoline | -> input() | 18:55 |
commandoline | Het is altijd mooi om je programma tussendoor eens te testen, om te kijken of het tot zover werkt. | 18:56 |
commandoline | dus, sla dit eens op, en voer het uit in python, op dezelfde manier als we gedaan hebben met hallo.py | 18:57 |
commandoline | FOAD: exporteren is mogelijk | 18:57 |
commandoline | Import/Export > Plain text file | 18:57 |
commandoline | een goede naam is bijv. calculator.py | 18:58 |
commandoline | ik heb 'm ook even geexporteerd, en zie dat ik tot zover geen typfouten heb gemaakt :) | 18:58 |
commandoline | Python voert het programma namelijk naar behoren uit. | 18:58 |
commandoline | is er iemand die het uitvoeren van het programma nog niet zo snel lukt? | 18:58 |
commandoline | goed, ik zie niemand direct problemen hebben. | 18:59 |
commandoline | laten we dan verder gaan met het programma | 19:00 |
commandoline | wat vinden jullie, zullen we de gebruiker gewoon vragen om twee cijfers, of | 19:01 |
commandoline | zullen we vragen naar een 'eerste getal om bewerking x mee te doen' en 'een tweede getal om bewerking x mee te doen' | 19:01 |
commandoline | FOAD: Twee cijfers is wel erg beperkt. | 19:01 |
commandoline | voorlopig wel idd, maar je kan het zelf naderhand nog uitbreiden. Dit is al meer dan genoeg als basis zul je merken | 19:02 |
leoquant | even twee eerst? | 19:02 |
commandoline | leoquant: zeker | 19:02 |
commandoline | goed, tijd om die twee gevallen te vragen dan. | 19:03 |
commandoline | opnieuw is input() prima geschikt | 19:03 |
commandoline | nu wordt het tijd om de gevraagde bewerking uit te voeren op de getallen. | 19:04 |
commandoline | Heeft iemand enig idee hoe we kunnen bepalen welke bewerking de gebruiker heeft gekozen? | 19:04 |
commandoline | StefandeVries: klopt | 19:05 |
leoquant | StefandeVries> if / else-if | 19:05 |
commandoline | nu komt er iets wat ik nog niet eerder heb laten zien | 19:05 |
commandoline | elif | 19:05 |
commandoline | het staat voor else if | 19:06 |
commandoline | vertaald in het Nederlands wordt het dan: | 19:06 |
leoquant | <overloper> waarom vraag je het soort bewerking niet als input3? | 19:06 |
commandoline | eigenlijk is dat zo, ik heb alleen de naam 'keuze' gekozen i.p.v. 'input3' | 19:07 |
leoquant | ok | 19:07 |
commandoline | goed, ik was bij elif | 19:07 |
commandoline | ik zal eerst even een voorbeeld ervan geven, later geef ik uitleg als het niet vanzelf duidelijk wordt. | 19:08 |
commandoline | begrijp iedereen wat elif doet? | 19:09 |
commandoline | het geeft een tweede mogelijkheid aan als de eerste niet voldoet. | 19:09 |
commandoline | mooi | 19:09 |
commandoline | tijd om nog even een stukje foutafhandeling toe te voegen | 19:09 |
commandoline | de gebruiker kan bijv. 5 hebben ingevoerd | 19:10 |
commandoline | Tjibba > maar is if dan niet voldoende? | 19:10 |
commandoline | als je nog een keer if zou gebruiken, zouden alle if's apart langsgelopen worden door python | 19:10 |
commandoline | nu stopt python met de elif's afgaan als één van de voorwaardes waar is. | 19:11 |
commandoline | FOAD > Nou en? | 19:11 |
commandoline | het scheelt iets qua snelheid. Hier valt het verschil wel mee, maar het is een goede gewoonte. | 19:11 |
commandoline | maar ik was bij foutafhandeling aangekomen. | 19:11 |
commandoline | als de gebruiker 5 invoert, gebeurt er momenteel helemaal niks. | 19:12 |
commandoline | geen van de voorwaardes is waar, en dus gaat python verder. | 19:12 |
commandoline | dat staat natuurlijk niet zo mooi, dus ik breid het programma nog een beetje uit. | 19:12 |
commandoline | goed, we hebben nu dus, ongeacht de bewerking, 'uitkomst' bepaalt. | 19:13 |
commandoline | hoog tijd om de gebruiker op de hoogte te brengen. | 19:13 |
commandoline | dat kan gewoon via print. | 19:14 |
commandoline | goed, dit programma zou al moeten draaien. | 19:14 |
commandoline | ik zie alleen nog één fout. | 19:15 |
commandoline | ziet iemand anders die ook? | 19:15 |
leoquant | is"? | 19:15 |
commandoline | leoquant: ? | 19:15 |
leoquant | laat maar.. | 19:15 |
commandoline | StefandeVries: noemt een goed punt, hoewel het niet is wat ik bedoelde | 19:15 |
commandoline | overloper: klopt | 19:16 |
leoquant | <overloper> er moet nog een terugkoppeling voor als de keuze geen 1-4 was | 19:16 |
commandoline | we laten een boodschap zien | 19:16 |
commandoline | maar vervolgens gaat python gewoon verder | 19:16 |
commandoline | wat python dan probeert is het volgende: | 19:16 |
commandoline | print "Uw keuze is wat onduidelijk. Was het een nummer tussen de 1 en de 4? Probeer het opnieuw." | 19:16 |
commandoline | eh, nee, wat er gebeurt is dit: | 19:16 |
commandoline | print "Het antwoord is", uitkomst, "." | 19:16 |
commandoline | het probleem is dat 'uitkomst' helemaal geen waarde heeft. | 19:17 |
commandoline | daarom zal python een foutmelding geven. (als gekozen wordt voor optie 5) | 19:17 |
commandoline | de oplossing: het programma voortijdig afbreken. | 19:17 |
commandoline | dat kan met exit() | 19:17 |
commandoline | ik heb het toegevoegd aan het document. Als er een ander nummer dan 1-4 wordt ingevoerd, gebeurd er nu dit: | 19:18 |
commandoline | - de gebruiker wordt op de hoogte gebracht. (dat hadden we eerder al gedaan) | 19:18 |
commandoline | - het programma wordt afgesloten. | 19:18 |
commandoline | goed, nu hebben we een werkend programma. | 19:19 |
commandoline | (als ik geen typfouten heb gemaakt, dan.) | 19:19 |
commandoline | exporteer het maar eens en probeer het uit te voeren. | 19:19 |
commandoline | Tjibba> maar wat gebeurd er als de gebruiker ipv een getal een letter invoert? | 19:19 |
commandoline | dan geeft python een foutmelding | 19:19 |
commandoline | hoe we die afvangen komt later een keer. | 19:19 |
commandoline | goed opgemerkt, dat wel. | 19:20 |
leoquant | <dimi77> hij geeft bij mij nog steeds een foutmelding | 19:20 |
leoquant | dimi77> laat maar doet het al | 19:20 |
commandoline | goed, ik zie hier een paar goede opmerkingen: | 19:21 |
commandoline | FOAD> 5/6 is helemaal niet 0. | 19:21 |
commandoline | dat klopt natuurlijk, dit is een foutje in python. Later zal ik uitleggen hoe we dit recht kunnen zetten. | 19:21 |
commandoline | (daar komen we vandaag niet meer aan toe denk ik) | 19:21 |
commandoline | Tjibba> pas na het opgeven van de 2 getallen zegt hij dat ik een onduidelijke keuze heb gemaakt | 19:21 |
commandoline | dat is eigenlijk wel een fout natuurlijk, maar de oplossing laat ik nog even wachten. | 19:22 |
commandoline | dat wordt huiswerk denk ik :) | 19:22 |
commandoline | nee, wat ik nu wil doen is nog één ding doen: | 19:22 |
commandoline | het programma moet blijven draaien, totdat de gebruiker aangeeft dat het gestopt mag worden. | 19:22 |
commandoline | StefandeVries: noemde eerder al de oplossing: de while-loop | 19:23 |
commandoline | ik zal die eerst even toevoegen, en daarna uitleggen. | 19:23 |
commandoline | StefandeVries> en een keuze voor exit | 19:24 |
commandoline | ook dat klopt, zover was ik alleen nog niet | 19:24 |
commandoline | eerst wil ik even kort vertellen wat de while-loop doet. | 19:24 |
commandoline | die voert een stuk code uit, zolang een bepaalde voorwaarde waar is. | 19:24 |
commandoline | die voorwaarde is hier de variabele 'rondgaan' | 19:24 |
commandoline | die heb ik gelijkgesteld aan 'True' -> dat betekend dat de voorwaarde waar is. | 19:25 |
commandoline | het programma zal nu dus net zolang doorgaan met herhalen, totdat rondgaan niet meer True is | 19:25 |
commandoline | (maar False) | 19:25 |
commandoline | goed, ik heb nu nog de optie '5' toegevoegd | 19:26 |
commandoline | wat die doet is een boodschap weergeven | 19:27 |
commandoline | ("Bedankt voor het gebruiken van de calculator!") | 19:27 |
commandoline | en het programma afsluiten | 19:27 |
commandoline | ik doe dat opnieuw via exit() | 19:27 |
commandoline | een andere optie zou kunnen zijn om 'rondgaan = False' daar neer te zetten | 19:27 |
commandoline | als niet onderaan die lijn 'print "Het antwoord is", uitkomst, "."' | 19:27 |
commandoline | had gestaan. | 19:27 |
commandoline | want ook bij het afsluiten blijft 'uitkomst' geen waarde hebben. | 19:28 |
commandoline | FOAD: Maar nu heeft de variabele nog altijd de waarde True? | 19:28 |
commandoline | klopt, daarom gebruik ik de functie exit() | 19:28 |
commandoline | als ik die functie niet zou gebruiken, zou het programma 'eeuwig' blijven draaien | 19:28 |
commandoline | goed, dat was wel wat ik jullie vandaag wilde laten zien. | 19:29 |
commandoline | zijn er nog vragen? | 19:29 |
commandoline | Tjibba: klopt, dat is huiswerk. | 19:29 |
commandoline | (het is nu definitief :P) | 19:29 |
commandoline | ik raad jullie aan om het document nog één keer te exporteren en te draaien, dan kun je ook de laatste wijzigingen zien. | 19:30 |
commandoline | goed, als er geen vragen meer zijn, dan is dit het einde van de les! Bedankt voor jullie komst allemaal, en tot volgende week! | 19:30 |
commandoline | oh, toch nog een vraag :) | 19:30 |
commandoline | overloper> waarom zet je de laatste printopdracht niet voor élse, uw keuze is onduidelijk? | 19:30 |
commandoline | als ik dat doe, krijg ik een foutmelding van python. | 19:31 |
commandoline | dan staat if/elif/else namelijk niet meer achter elkaar in volgorde | 19:31 |
commandoline | en dan herkent python ze niet meer als bij elkaar horend. | 19:31 |
leoquant | FOAD> Maar wat is nu precies het huiswerk? | 19:32 |
leoquant | commandoline, zeer bedankt voor je les(sen) | 19:34 |
commandoline | Probeer te zorgen dat getal1 en getal2 niet meer gevraagd worden als ze niet nodig zijn. | 19:34 |
commandoline | da's het huiswerk. | 19:34 |
commandoline | en graag gedaan :) | 19:34 |
leoquant | ok | 19:34 |
Tjibbo | Bedankt!! | 19:34 |
commandoline | en verder, blijf gewoon zoveel uitproberen als je wilt met python, dat is de beste manier om python te leren! | 19:34 |
leoquant | leerzaam | 19:36 |
StefandeVries | +1 | 19:36 |
=== ChanServ changed the topic of #Ubuntu-nl-mwanzo-klas to: Zaterdag 05-02-11 :19.30-20.30 workshop Python voor "beginners" (3) #Ubuntu-nl-mwanzo-klas. Info: http://wiki.ubuntu-nl.org/community/mwanzo/Workshop/BasiscursusPython Leiding: commandoline. logs op http://irclogs.ubuntu.com. Alle cursisten join ook: #ubuntu-nl-mwanzo, daar kun je vragen stellen. |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!