/srv/irclogs.ubuntu.com/2011/01/29/#ubuntu-nl-mwanzo-klas.txt

FOADZo.17:36
FOADik zit al klaar.17:36
SanderMAvoin18:14
SanderMAvond18:14
hajourhai all18:14
StefandeVrieshallo18:15
exaltstttt... heb begrepen dat we hier niet mogen praten18:16
SanderMDe les  moet  nog beginnen? Was even in de warrie vanwege CET  tijd?18:16
leoquanthoi exalt18:16
exalthaha hoi leoquant18:17
dimi77goede avond18:17
leoquant19.3018:17
leoquanthoi dimi7718:17
SanderMIk ben  op tijd dus :) gelukkig was vorige keer vet te laat18:18
exaltik ga misschien wat eerder weg vandaag , dat licht aan wat variabelen18:18
FOADDat mag niet, exalt.18:18
FOADTenzij je een briefje van je moeder hebt.18:18
exaltjammer.18:18
dimi77:-D18:18
FOADGelukkig gaat het vanavond over variabelen, dus dat komt goed uit.18:20
FOADDenk ik.18:20
Ronnieheeft iedereen flink gestudeerd op het materiaal van vorige les?18:21
Oeravondjes allen18:21
FOADAbsoluut, Ronnie.18:21
FOADHet was taaie materie, maar ik denk dat ik het begrijp.18:21
FOADDag Oer.18:21
dimi77zeker Ronnie18:22
Ronnieheel goed, beide18:22
dimi77goede avond Oer18:22
leoquantubuntu-nl-mwanzo is open18:23
leoquanthier volgt zo de les18:23
leoquantcommandoline, klaar?18:29
commandolineleoquant: ja18:30
leoquantRawChid, kiwinote Ronnie StefandeVries ok?18:30
kiwinoteja18:30
StefandeVriesZeker18:30
commandolineok, kunnen we beginnen, leoquant?18:30
leoquantyep!18:30
commandolineok, welkom dan allemaal bij de tweede les Python!18:31
commandolineik heb vorige keer een opdrachtje gegeven aan het eind van de les.18:31
commandolinehttp://paste.ubuntu.com/559992/18:31
Ronnieben er net weer18:32
commandolineis een mogelijke uitwerking18:32
commandolineik zal even uitleggen wat er gebeurd18:32
commandolineop de 1e regel wordt m.b.v. de input()-functie aan de gebruiker gevraagd om een nummer in te voeren18:32
commandolinedat nummer wordt opgeslagen in de variabele nummer18:33
commandolineop de volgende regel wordt dat nummer met 2 vermenigvuldigt, en de uitkomst wordt opgeslagen in de variabele uitkomst18:33
commandolineten slotte wordt het resultaat netjes weergegeven op het scherm m.b.v. 'print'18:33
commandolineis er iemand die nu nog vragen heeft over de opdracht?18:34
commandolineok, ik zie zo niks, dus dan wordt het tijd om verder te gaan.18:34
commandolinede vorige keer hebben we alle commando's in de zogenaamde interactieve python shell ingevoerd18:35
commandolinedat betekent dat ieder commando dat je invoert, direct wordt uitgevoerd.18:35
commandolinebij een normaal programma is dat niet handig18:35
commandolineom dat probleem op te lossen, kun je je programma opslaan in een bestand.18:36
commandolineIk 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 besturingssysteem18:36
commandolinekies Toepassingen > Hulpmiddelen > Teksteditor18:37
commandolineje typt in het bestand een programma dat we al eerder hebben gezien:18:38
commandolineprint "Hallo Ubuntero's!"18:38
commandolinedaarna kies je: Bestand > Opslaan18:38
commandolineje kiest een locatie om het bestand op op te slaan, bijv. het Bureaublad18:39
commandoline(daar ga ik vanuit bij dit voorbeeld)18:39
commandolineachter 'Naam: ' typ je in:18:39
commandolinehallo.py18:39
commandolinehet stukje 'hallo' is zelfgekozen, de extensie .py is verplicht.18:39
commandolineals je het bestand hebt opgeslagen, wordt het tijd om de terminal weer te starten18:40
commandoline(Toepassingen > Hulpmiddelen > Terminalvenster)18:40
commandolinein de terminal ga je vervolgens naar de locatie waar je het bestand hebt opgeslagen, in ons voorbeeld gaat dat via het commando18:40
commandolinecd ~/Bureaublad18:41
commandolinelukt het tot zover?18:41
leoquantja18:41
commandolinegoed, dan gaan we verder18:41
commandolinetyp nu in:18:41
commandolinepython hallo.py18:42
commandolineje zult zien dat het programma dat je eerder hebt ingevoerd, uitgevoerd wordt :)18:42
commandolineJe kan nu ook zonder problemen het programma nog een keer draaien:18:43
commandolinegewoon een kwestie van het commando 'python bestandsnaam.py' herhalen18:43
leoquantok18:44
commandolineDit maakt het mogelijk om geavanceerdere programma's te schrijven tot nu toe18:44
commandolinedeze les wil ik met jullie een programma maken dat ook in de praktijk nuttig is18:44
commandolineeen rekenmachine18:45
commandolinehet maken van dit script gaat waarschijnlijk langere tijd duren.18:45
commandolineen ik wil dat jullie mee kunnen kijken18:45
commandolinedaarom heb ik een bestand online gezet.18:46
commandolinehttp://piratepad.net/ep/pad/view/ro.0i32sfJWAlx/latest18:46
commandolinejullie kunnen door op die link te klikken, live meekijken met wat ik typ.18:46
leoquantik zie de tekst idd18:47
leoquantyep18:47
commandolineGoed, de eerste vraag is nu, welke commando's we allemaal achter elkaar moeten zetten om zo'n rekenmachine te bouwen.18:48
commandolineik heb ondertussen een lijstje toegevoegd in het document, lijkt iedereen dit logisch?18:50
commandolineOm te antwoorden op de opmerking van FOAD in de chat:18:50
commandolinehet lijkt ingewikkeld, maar (vrijwel) alle dingen die ik hier heb opgenoemd kunnen jullie al schrijven.18:51
leoquantlets go18:51
commandolineik heb nu voor de beschrijving haakjes gezet.18:51
commandolineeh, hekjes :P18:51
commandolinehekjes betekenen voor python dat de rest van de regel genegeerd kan worden18:52
commandolineGoed, tijd om de eerste regel code te schrijven.18:52
commandolinewe moeten een welkomsboodschap tonen, iemand enig idee hoe we dat kunnen doen?18:52
commandolineTjibba, ja, klopt18:53
leoquantTjibba> print hallo?18:53
commandoline(als je de haakjes toevoegd)18:53
commandolineStefandeVries: die vindt ik nog mooier18:53
commandolinegoed, volgende stap18:54
commandolineeen menu weergeven18:54
commandolineeerst maar eens de opties tonen die de gebruiker heeft18:54
commandolinehmm, nu moeten we nog wat toevoegen zodat de gebruiker daadwerkelijk zijn/haar keuze kan maken18:55
commandolinem.a.w., we moeten de gebruiker om invoer vragen18:55
commandoline-> input()18:55
commandolineHet is altijd mooi om je programma tussendoor eens te testen, om te kijken of het tot zover werkt.18:56
commandolinedus, sla dit eens op, en voer het uit in python, op dezelfde manier als we gedaan hebben met hallo.py18:57
commandolineFOAD: exporteren is mogelijk18:57
commandolineImport/Export > Plain text file18:57
commandolineeen goede naam is bijv. calculator.py18:58
commandolineik heb 'm ook even geexporteerd, en zie dat ik tot zover geen typfouten heb gemaakt :)18:58
commandolinePython voert het programma namelijk naar behoren uit.18:58
commandolineis er iemand die het uitvoeren van het programma nog niet zo snel lukt?18:58
commandolinegoed, ik zie niemand direct problemen hebben.18:59
commandolinelaten we dan verder gaan met het programma19:00
commandolinewat vinden jullie, zullen we de gebruiker gewoon vragen om twee cijfers, of19:01
commandolinezullen we vragen naar een 'eerste getal om bewerking x mee te doen' en 'een tweede getal om bewerking x mee te doen'19:01
commandolineFOAD: Twee cijfers is wel erg beperkt.19:01
commandolinevoorlopig wel idd, maar je kan het zelf naderhand nog uitbreiden. Dit is al meer dan genoeg als basis zul je merken19:02
leoquanteven twee eerst?19:02
commandolineleoquant: zeker19:02
commandolinegoed, tijd om die twee gevallen te vragen dan.19:03
commandolineopnieuw is input() prima geschikt19:03
commandolinenu wordt het tijd om de gevraagde bewerking uit te voeren op de getallen.19:04
commandolineHeeft iemand enig idee hoe we kunnen bepalen welke bewerking de gebruiker heeft gekozen?19:04
commandolineStefandeVries: klopt19:05
leoquantStefandeVries> if / else-if19:05
commandolinenu komt er iets wat ik nog niet eerder heb laten zien19:05
commandolineelif19:05
commandolinehet staat voor else if19:06
commandolinevertaald in het Nederlands wordt het dan:19:06
leoquant<overloper> waarom vraag je het soort bewerking niet als input3?19:06
commandolineeigenlijk is dat zo, ik heb alleen de naam 'keuze' gekozen i.p.v. 'input3'19:07
leoquantok19:07
commandolinegoed, ik was bij elif19:07
commandolineik zal eerst even een voorbeeld ervan geven, later geef ik uitleg als het niet vanzelf duidelijk wordt.19:08
commandolinebegrijp iedereen wat elif doet?19:09
commandolinehet geeft een tweede mogelijkheid aan als de eerste niet voldoet.19:09
commandolinemooi19:09
commandolinetijd om nog even een stukje foutafhandeling toe te voegen19:09
commandolinede gebruiker kan bijv. 5 hebben ingevoerd19:10
commandolineTjibba > maar is if dan niet voldoende?19:10
commandolineals je nog een keer if zou gebruiken, zouden alle if's apart langsgelopen worden door python19:10
commandolinenu stopt python met de elif's afgaan als één van de voorwaardes waar is.19:11
commandolineFOAD > Nou en?19:11
commandolinehet scheelt iets qua snelheid. Hier valt het verschil wel mee, maar het is een goede gewoonte.19:11
commandolinemaar ik was bij foutafhandeling aangekomen.19:11
commandolineals de gebruiker 5 invoert, gebeurt er momenteel helemaal niks.19:12
commandolinegeen van de voorwaardes is waar, en dus gaat python verder.19:12
commandolinedat staat natuurlijk niet zo mooi, dus ik breid het programma nog een beetje uit.19:12
commandolinegoed, we hebben nu dus, ongeacht de bewerking, 'uitkomst' bepaalt.19:13
commandolinehoog tijd om de gebruiker op de hoogte te brengen.19:13
commandolinedat kan gewoon via print.19:14
commandolinegoed, dit programma zou al moeten draaien.19:14
commandolineik zie alleen nog één fout.19:15
commandolineziet iemand anders die ook?19:15
leoquantis"?19:15
commandolineleoquant: ?19:15
leoquantlaat maar..19:15
commandolineStefandeVries: noemt een goed punt, hoewel het niet is wat ik bedoelde19:15
commandolineoverloper: klopt19:16
leoquant<overloper> er moet nog een terugkoppeling voor als de keuze geen 1-4 was19:16
commandolinewe laten een boodschap zien19:16
commandolinemaar vervolgens gaat python gewoon verder19:16
commandolinewat python dan probeert is het volgende:19:16
commandolineprint "Uw keuze is wat onduidelijk. Was het een nummer tussen de 1 en de 4? Probeer het opnieuw."19:16
commandolineeh, nee, wat er gebeurt is dit:19:16
commandolineprint "Het antwoord is", uitkomst, "."19:16
commandolinehet probleem is dat 'uitkomst' helemaal geen waarde heeft.19:17
commandolinedaarom zal python een foutmelding geven. (als gekozen wordt voor optie 5)19:17
commandolinede oplossing: het programma voortijdig afbreken.19:17
commandolinedat kan met exit()19:17
commandolineik 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
commandolinegoed, nu hebben we een werkend programma.19:19
commandoline(als ik geen typfouten heb gemaakt, dan.)19:19
commandolineexporteer het maar eens en probeer het uit te voeren.19:19
commandolineTjibba> maar wat gebeurd er als de gebruiker ipv een getal een letter invoert?19:19
commandolinedan geeft python een foutmelding19:19
commandolinehoe we die afvangen komt later een keer.19:19
commandolinegoed opgemerkt, dat wel.19:20
leoquant<dimi77> hij geeft bij mij nog steeds een foutmelding19:20
leoquantdimi77> laat maar doet het al19:20
commandolinegoed, ik zie hier een paar goede opmerkingen:19:21
commandolineFOAD> 5/6 is helemaal niet 0.19:21
commandolinedat 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
commandolineTjibba> pas na het opgeven van de 2 getallen zegt hij dat ik een onduidelijke keuze heb gemaakt19:21
commandolinedat is eigenlijk wel een fout natuurlijk, maar de oplossing laat ik nog even wachten.19:22
commandolinedat wordt huiswerk denk ik :)19:22
commandolinenee, wat ik nu wil doen is nog één ding doen:19:22
commandolinehet programma moet blijven draaien, totdat de gebruiker aangeeft dat het gestopt mag worden.19:22
commandolineStefandeVries: noemde eerder al de oplossing: de while-loop19:23
commandolineik zal die eerst even toevoegen, en daarna uitleggen.19:23
commandolineStefandeVries> en een keuze voor exit19:24
commandolineook dat klopt, zover was ik alleen nog niet19:24
commandolineeerst wil ik even kort vertellen wat de while-loop doet.19:24
commandolinedie voert een stuk code uit, zolang een bepaalde voorwaarde waar is.19:24
commandolinedie voorwaarde is hier de variabele 'rondgaan'19:24
commandolinedie heb ik gelijkgesteld aan 'True' -> dat betekend dat de voorwaarde waar is.19:25
commandolinehet programma zal nu dus net zolang doorgaan met herhalen, totdat rondgaan niet meer True is19:25
commandoline(maar False)19:25
commandolinegoed, ik heb nu nog de optie '5' toegevoegd19:26
commandolinewat die doet is een boodschap weergeven19:27
commandoline("Bedankt voor het gebruiken van de calculator!")19:27
commandolineen het programma afsluiten19:27
commandolineik doe dat opnieuw via exit()19:27
commandolineeen andere optie zou kunnen zijn om 'rondgaan = False' daar neer te zetten19:27
commandolineals niet onderaan die lijn 'print "Het antwoord is", uitkomst, "."'19:27
commandolinehad gestaan.19:27
commandolinewant ook bij het afsluiten blijft 'uitkomst' geen waarde hebben.19:28
commandolineFOAD: Maar nu heeft de variabele nog altijd de waarde True?19:28
commandolineklopt, daarom gebruik ik de functie exit()19:28
commandolineals ik die functie niet zou gebruiken, zou het programma 'eeuwig' blijven draaien19:28
commandolinegoed, dat was wel wat ik jullie vandaag wilde laten zien.19:29
commandolinezijn er nog vragen?19:29
commandolineTjibba: klopt, dat is huiswerk.19:29
commandoline(het is nu definitief :P)19:29
commandolineik raad jullie aan om het document nog één keer te exporteren en te draaien, dan kun je ook de laatste wijzigingen zien.19:30
commandolinegoed, 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
commandolineoh, toch nog een vraag :)19:30
commandolineoverloper> waarom zet je de laatste printopdracht niet voor élse, uw keuze is onduidelijk?19:30
commandolineals ik dat doe, krijg ik een foutmelding van python.19:31
commandolinedan staat if/elif/else namelijk niet meer achter elkaar in volgorde19:31
commandolineen dan herkent python ze niet meer als bij elkaar horend.19:31
leoquantFOAD> Maar wat is nu precies het huiswerk?19:32
leoquantcommandoline, zeer bedankt voor je les(sen)19:34
commandolineProbeer te zorgen dat getal1 en getal2 niet meer gevraagd worden als ze niet nodig zijn.19:34
commandolineda's het huiswerk.19:34
commandolineen graag gedaan :)19:34
leoquantok19:34
TjibboBedankt!!19:34
commandolineen verder, blijf gewoon zoveel uitproberen als je wilt met python, dat is de beste manier om python te leren!19:34
leoquantleerzaam19:36
StefandeVries+119: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!