In Python ziet de for
-lus er als volgt uit:
for VARIABELE in COLLECTIE:
A
Je kan dit lezen als: Voor elke waarde van VARIABELE die in COLLECTIE zit, voer code A uit. Hoe zo’n collectie eruit ziet, bespreken we in de volgende secties.
👀 Voorbeeld - 5x Hallo
for i in range(5): print('Hallo')
💡 Hint
Let opnieuw op de dubbelepunt achter de
for
. Merk ook op dat code A opnieuw geïndenteerd is.
👀 Voorbeeld - Tellen binnen bereik
Het volgende stukje code print de getallen van 0 tot en met 4.
for n in range(5): print(n)
De collectie
range(5)
bevat alle getallen van 0 tot 5, met 5 dus niet inbegrepen. Er gebeuren hier 5 iteraties van het stukje code onder defor
-lus.
n=0
, printn
.n=1
, printn
.n=2
, printn
.n=3
, printn
.n=4
, printn
.
🧠 Denkoefening - Meer iteraties
Wat moet je aan het vorige voorbeeld veranderen indien je 8 iteraties wil in plaats van 5.
In het voorbeeld hierboven gebruiken we de range
-functie. Die functie krijgt 1 tot 3 argumenten: range(start, stop, stap)
.
start
is optioneel en bevat de startwaarde van de collectie. De defaultwaarde is 0, dit is de startwaarde wanneer start niet wordt ingevuld.stop
bevat de eindwaarde van de collectie. Die waarde zelf is niet inbegrepen.stap
is optioneel en bevat de waarde van de stapgrootte tussen twee opeenvolgende cijfers. De defaultwaarde is 1, dit is de stapgrootte wanneer stap niet wordt ingevuld.Er bestaan dus twee soorten lussen: for
-lussen en while
-lussen. Je kan steeds de ene lus in de andere transformeren mits een aantal aanpassingen in je programma.
👀 Voorbeeld - For of while?
Het vorige voorbeeldprogramma, dat de getallen van 0 tot en met 4 print, kan je makkelijk aanpassen naar een programma met een
while
-lus.n = 0 while n < 5: print(n) n += 1
Zoals je ziet is de code met de
for
-lus een stuk compacter. De telvariabele verhogen, wat nodig was in dewhile
-lus, is in eenfor
-lus niet meer nodig.
🤔 Huh? For en while
Wanneer gebruik ik welke soort lus?
Hiervoor bestaan er een aantal vuistregels. Je kan een
for
-lus steeds schrijven als eenwhile
-lus en andersom. Toch is het meestal gemakkelijker om voor eenfor
-lus te kiezen.Bijvoorbeeld, wanneer
- je een stuk code n keer wil herhalen.
- je over een bepaalde collectie wil itereren.
Daarnaast vermijd je met een
for
-lus oneindige lussen. Eenwhile
-lus kies je best wanneer je wil herhalen zo lang als een bepaalde voorwaarde geldt. Die voorwaarde kan bijvoorbeeld afhangen van de input van de gebruiker.
💻 Programmeeroefening - 5–20 met for-lus
We willen een programma schrijven dat de getallen print tussen 5 en 20. Hier is geschreven met een
while
-lus.i = 5 while i < 21: print(i) i += 1
Schrijf in de editor hieronder een programma dat hetzelfde doet, maar met een
for
-lus.