Les 5
Heb je Les 4 al af? Want als je niet weet wat een variabele is snap je hier niks van.
Lussen
Als je goed kijkt naar het programma dat we tot nog toe hebben geschreven is het wel een beetje saai. De regels lijken heel veel op elkaar.
(Weet je nog hoe je het programma opent in Notepad?
- Start-knop linksonder
- Type
cmd
- Type
notepad print.py
Doe maar.)
Variabelen kunnen ons ook helpen om dat te verbeteren. Daarvoor maken wij een lus.
We beginnen met een nieuw programmaatje. Ga naar het zwarte cmd
-scherm en type:
notepad for.py
Als Notepad vraagt of je een nieuw bestand wilt klik je Ja
of Yes
.
Type nu maar eens dit:
for i in range(1, 11): print i
Eén ding is héél belangrijk: de tweede regel begint met 4 spaties. Die staat dus een stukje naar binnen. Daardoor weet de computer wat bij de lus hoort en wat niet.
Bewaar, en type in het zwarte scherm:
python for.py
Zie je wat er gebeurt? De computer telt tot 10. Met twee regels programmeren!
Dit is wat programmeurs een lus noemen. Net als in je veter, kijk maar:
for
betekent ‘voor’, en range
betekent zoiets als: alle getallen tussen dit en dat. Dus eigenlijk staat hier zoiets als:
Voor alle i’tjes tussen één en elf,
print dat i’tje.
Dit is wat de computer denkt.
Hmm. Wat zullen we vandaag eens gaan doen? O, of we
for.py
willen uitvoeren. Nou, vooruit dan maar.Even kijken wat er staat.
for in in range(1, 11)
Okee, dan beginnen we met 1:
i = 1
.
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
1
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 2
i = 2
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
2
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 3
i = 3
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
3
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 4
i = 4
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
4
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 5
i = 5
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
5
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 6
i = 6
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
6
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 7
i = 7
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
7
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 8
i = 8
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
8
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 9
i = 9
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
9
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 10
i = 10
En wat moeten we doen met i? Es kijken:print i
Hier komt ie:
10
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.Goed, waar waren we gebleven? O ja, bij 11
Maar we moeten maar tot 11. Ik stop er maar eens mee.
Als jij zo zou denken was je halverwege al in slaap gevallen, denk ik. Gaaaaaaaap. Maar computers zijn erg goed in saaie dingen. Hij gaat gewoon door met wat hem gevraagd wordt.
Eigenlijk is het geen lus, maar meer also je een touwtje om een stokje aan het winden bent. Je komt van boven, naar beneden, dan terug naar boven, weer naar beneden, enzovoorts enzovoorts totdat je klaar bent.
Wat de computer hier denkt lijkt eigenlijk wel een beetje op ons tafel-programmaatje, nietwaar? Hij denkt steeds hetzelfde, maar steeds met een andere waarde voor de variabele i
.
Dat is eigenlijk hetzelfde als de tien regels in print.py
. Er staat steeds
print '1 x', getal, '=', 1 * getal
maar met een andere waarde voor 1
. Wat als we daar nou eens i
van maken?
for i in range(1, 11): print i, 'x', getal, '=', i * getal
Probeer maar eens of je for.py
zo kan schrijven dat hij precies hetzelfde doet als print.py
.
In hoeveel regels kan dat?
Kun je hem nu ook verder laten rekenen? tot 20 x 285672187? Of zelfs tot 1000 x 285672187?
Een goede programmeur is een luie programmeur
Als het goed is waren het vier regels. Maar om hem tot 20 x 285672187 te laten rekenen was nog steeds vier regels. En om hem tot 1000 keer 285672187 te laten rekenen was nog steeds vier regels. Want jij, de programmeur, was lui, en liet de computer al het werk doen. En dat allemaal omdat we de getallen in doosjes hadden gestopt: een i
-doosje waar de for
-lus steeds een nieuw getal instopte, en een getal
-doosje waar 285672187 inzat.
Ze zeggen wel eens dat een goede programmeur een luie programmeur is. Want programmeurs willen nooit veel typen. Maar om ervoor te zorgen dat je niet veel hoeft te typen moet je wel heel hard nadenken: wat kan ik allemaal in een doosje stoppen?
Dat is een beetje de truc van programmeren: eerst ga je heel lang nadenken, en dan ga je heel weinig typen. Onthoud dat maar.
Wat heb je geleerd?
Wat hebben we in deze les geleerd?
- Met een
for
-lus kan je tellen. - Als je de computer vraagt of hij tot 11 wil tellen, telt hij tot tien.
- Computers hebben hele saaie gedachten.
- Computers vinden het niet erg om dingen heel vaak te herhalen.
- Kinderen vinden het wel erg om dingen te herhalen, want dat is saaaaaaaaaaaaaaaaaaaaaaaai.
- Een goede programmeur is een luie programmeur.
Vind je het nog leuk? Volgende keer meer!
lol het kan in 3 regels
Ik heb er vier…
Het zijn er 3:
getal = 7149393
for i in range(1, 21):
print i,’x’, getal , ‘=’, i * getal
Waarschijnlijk heb je deze regel niet meer….. print ‘Dit is de tafel van’, getal
en dan heb je er wel 4.
no, je moet er
print ‘Tafel van’, getal
boven zetten
ik ook
Dag Dion,
ik ben nu bij les 5. Wat ik alleen niet snap, als ik via cmd het commando
‘notepad print.py’ uitvoer krijg ik een error. Als ik het commano echter rechtstreeks in de zoekbalk uitvoer (dus zonder eerst cmd) dan lukt het wel. Enig idee waar dat aan kan liggen?
mvg,
Edo
Hoi Edo,
Super dat je al zo ver bent! Wat voor foutmelding krijg je precies?
Aan de andere kant: als het op jouw manier werkt is het ook goed. Succes met de verdere lessen!
Dion
dag Dion, ik krijg de volgende foutmelding;
‘notepad is not recognized as an internal or external command, operable program or batch file
Het kan in drie regels. Henk heeft gelijk
Die drie regels kloppen helemaal!
In
print.py
staat ook nog deze regel:print 'De tafel van', getal
Met die erbij is het vier regels…
Het kan echt in 3 regels:
getal = 123
print ‘De tafel van’, getal
for i in range (1, 11): print i, ‘x’, getal, ‘=’, i * getal
Als je na de dubbele punt niet naar een volgende regel gaat maar gewoon door typt, doet ie het ook.
Mooi gevonden! Zo kan het inderdaad in drie regels.
Ikzelf vind het wel duidelijker als je het print-statement op de volgende regel zet.
Het kan ook in twee regels… Maar dan wordt het nog onduidelijker.
getal = 25
for i in range(1,51):print ‘de tafel van i’, ‘X’, getal, ‘=’, i * getal,
telt deze het is twee regels
Deze methode print ‘de tafel van’ voor iedere regel… Dus dat is niet helemaal hetzelfde.
ik was eerst goed bezig maar nu krijg ik als ik ‘print …’ intyp de melding ‘kan apparaat PRN niet initialiseren’ wat moet ik doen?
Ik denk dat je ‘print …’ intypt in het
cmd
-window. Maar print werkt alleen in python… Dus dat commando moet je of in python typen, of in een bestandje typen dat je met Notepad maakt.Succes,
Dion
ik kan nu die for lus gebruiken maar wat is die for lus en hoe gebruik je het voor iets anders
Het kan uitgebreid in 3 regels.
getal = 9
x = 11
print ‘de tafel van’, getal: for i in range(1, x): print getal, ‘x’, i, ‘=’, getal *i
Dat werkt bij mij niet!
Dion
Ik kan het in 2 regels!!!
helemaal makkelijk
ik deed niet alles wat erin stond, maar snap het wel. eigenlijk is leren om te programmeren best handig!
Hallo, ik heb het in drie regels, ik snap niet zo goed hoe jij er vier doet… Nu ja, het werkt 🙂 grtjes silke 🙂
hij rekent bij mij de tafel niet uit
ik ben negen en python is leuk
ik ook