Je hebt al eerder kennis gemaakt met hoe for-loops werken. Als je wilt dat iets tien keer wordt herhaald, dan gebruik je de for-loop. Hier een voorbeeld:
In dit geval wordt de regel "Dit is herhaling" tien keer herhaald. En na de zin Dit is een herhaling volgt de inhoud van de loopcounter i
Je kunt nu ook invoer van de gebruiker gebruiken om je for-loop aan te passen:
Je kunt ook loops en if-statements combineren natuurlijk:
Schrijf een programma dat vraagt of iemand wel of niet naar de dierentuin wil, en als het antwoord ja is, vraag dan met hoeveel mensen zij erheen willen. Print dan voor ieder persoon waarvan ze willen die mee gaat een keer “veel plezier!”.
Breid het voorgaande uit. Als er op de eerste vraag een nee gegeven wordt, vraag dan of ze anders misschien naar de film willen. Zo ja, met hoeveel personen (en weer zo vaak printen), en zo nee print dan een gepast antwoord.
Schrijf een programma dat getallen gaat optellen. Vraag eerst hoeveel getallen een gebruiker wil optellen. Vraag daarna steeds opnieuw om een getal en tel dat op bij het totaal. Aan het einde print je:
De som van de getallen is <som van de getallen>.
HINT: Gebruik een teller buiten je for-loop:
som = 0
for _ in range(5):
som = som + getal
print(som)
In de voorgaande herhalingen weet je precies hoe vaak je het wilt herhalen. Maar wat als je niet van te voren weet hoe vaak je iets wilt herhalen? Dan gebruik je een andere soort loop. De while
-loop.
Als je dit programma uitvoert, dan zal hij nooit stoppen. Hij zal continu vragen om een woord in te typen en zodra je een woord intypt geeft hij de lengte van het ingetypte woord. Dit betekent dat het woordje EINDE nooit geprint zal worden.
We kunnen een while loop ook laten stoppen door gebruik te maken van een boolean (True/False waarde). We kunnen namelijk dit zeggen: Als iemand het woordje quit intypt, dan stoppen we met de loop.
Dit worden ook wel interactieve while loops genoemd. Het aantal keren dat de loop herhaalt is dan niet van te voren bepaald, maar hangt af van de invoer van de gebruiker!
Maak een interactieve while loop waarin een gebruiker net zo lang woorden kan intypen, totdat hij het woordje stop ingeeft. Zodra hij dat doet, gaat het programma uit de loop en eindigt hij. Een verloop van het programma zou er als volgt uit kunnen zien:
>>> Voer een woord in: hoi
>>> Voer een woord in: doei
>>> Voer een woord in: informatica
>>> Voer een woord in: boe
>>> Voer een woord in: stop
>>> Je wilt stoppen? Dat kan! Tot de volgende keer!
Lees herhaaldelijk een woord in van de gebruiker. Print dan steeds uit: Wat een mooi woord: Waarbij het woord is dat de gebruiker invoert. Zodra de gebruiker stop invoert stop je de loop.
Strings zijn rijen met letters
Een stukje tekst (string) in Python is eigenlijk een rij met letters. En zo kun je een variabele met tekst ook benaderen. Zie het volgende voorbeeld:
Door achter de variabele fruit
blokhaken (daarmee bedoel ik de tekens ‘[‘ en ‘]’) te plaatsen en daartussen een getal te zetten, geef je eigenlijk aan dat je de letter op positie drie wilt uitprinten. Dus in dit geval zeg ik: geef mij de letter op positie drie in het woord ‘banaan’. Maar denk erom dat python begint te tellen bij 0! Kortom, je krijgt niet de n te zien, maar de a! probeer maar eens.
Maak een programma dat de gebruiker steeds vraagt(in een while loop) om een woord in te voeren. Als het woord begint met een n, dan zegt hij "Je woord begint met een n" en stopt hij met de loop.
Maak een programma dat de gebruiker steeds vraagt(in een while loop) om een woord in te voeren. Als het woord eindigt met een n, dan zegt hij "Je woord eindigt met een n" en stopt hij met de loop.
TIP: Omdat je niet weet hoe lang het woord is, dat de gebruiker intypt, kun je ook niet zomaar naar de zoveelste letter kijken. Maar wellicht kun je wel dankbaar gebruik maken van de len()
functie!
Het volgende programma telt het aantal keren dat de letter ‘a’ voorkomt in een woord.
Hierboven staat een variant van een loop die je als het goed is nog niet eerder hebt gezien. for letter in woord
is een loop die in dit geval zes keer wordt herhaald. Waarom? Omdat het woordje banaan uit zes letters bestaat! En elke keer bevat de variabele letter de volgende letter in het woord. De eerste keer bevat het de letter b
, de tweede keer de letter a
, de derde keer n
enzovoorts.
Dit programma demonstreert ook het gebruik van een teller. De variabele teller is aan het begin ingesteld op 0 en vervolgens wordt hij iedere keer opgehoogd zodra een ‘a’ is gevonden. Als de loop afloopt, bevat teller het resultaat: namelijk het totaal aantal ‘a’-s.
Pas het bovenstaande programma aan, zodat de gebruiker een woord mag ingeven. Vervolgens moet het programma het aantal klinkers (‘a’, ‘e’, ‘i’, ‘o’ , ‘u’) tellen in dat woord.
Net als dat if-opdrachting in if-opdrachten gezet kunnen worden, kan dit ook met for-loops. Dit is heel handig als je bijvoorbeeld tien keer door een woord wilt loopen.
Zoals je kan zien wordt er hier 5 keer door het woord 'banaan' heen geloopt. En elke keer word er een print actie uitgevoerd per letter in dat woord. Daarom staat elke letter op een nieuwe regel. Als je bijvoorbeeld een ander woord zou nemen in plaats van “for i in range(5)
:” zou er net zo vaak banaan geschreven worden, als er letters in dat woord zou zitten
Hier zie je dus dat het woord banaan
drie keer geprint wordt, omdat het woord 'koe
' bestaat uit drie letters. Bij het volgende voorbeeld wordt dat nog iets duidelijker hoe het werkt
Hier zie je dat er eerst een 'k’
geprint wordt, vervolgens een 'b’
, daarna weer een 'k’
, dan een 'a’
etc. Zo zie je dat er per letter in koe, steeds door het woord banaan gegaan wordt.
Schrijf een programma dat vier keer, elke letter van het woord “lolly” print.
Schrijf een programma dat afwisselend elke letter van twee verschillende woorden print, dus: koe + man wordt:
>>> k
>>> m
>>> o
>>> a
>>> e
>>> n
Je kunt in Python ook met de in operator kijken of een letter in een woord voorkomt:
In alle drie de gevallen is de in-constructie een vergelijking die waar of onwaar is. Daarom mag je hem achter een if zetten.