While-loop

Met een while-loop herhaal je code zolang een voorwaarde waar is. Waar we in de vorige les bij de for-loop zagen dat je van tevoren weet hoevaak de loop runt (bijvoorbeeld 5 keer met range(5)), blijft een while-loop net zolang dóórgaan totdat de situatie wezenlijk verandert.
Een simpel voorbeeld waarbij we aftellen:
getal = 5
while getal > 0:
print(getal)
getal -= 1 # Vergeet deze stap nooit, anders blijft hij voor altijd 5!
print("Start!")
Probeer zelf
Schrijf een while-loop die aftelt van 3 naar 1 en daarna Klaar! print.
getal = 3
while ...:
print(getal)
...
print("Klaar!")✅ Oplossing
getal = 3
while getal > 0:
print(getal)
getal -= 1
print("Klaar!")
Predict
Bekijk de volgende code. We mixen hier een loop met een if-statement. Wat denk je dat er op het scherm geprint wordt?
getal = 1
while getal <= 5:
if getal < 3:
print(f"{getal} is laag")
else:
print(f"{getal} is hoog")
getal += 1
Let op de dubbele inspringing (4 spaties en 8 spaties). Wat doet dit met de structuur? Bespreek je theorie.
Run
Zet de code over in de Playground en run het.
👀 Kwam dit overeen met je voorspelling?
1 is laag
2 is laag
3 is hoog
4 is hoog
5 is hoog
Bij elke herhaling checkt de if of getal kleiner is dan 3. De variabele getal wordt iedere ronde netjes met 1 opgehoogd — daardoor "kantelt" het bericht zodra getal 3 wordt.
Investigate
Bekijk deze stiekem stukgemaakte code in de Playground. Start de code en kijk wat er gebeurt (klik eventueel op 'Stop' als je browser begint vast te lopen!):
getal = 1
while getal <= 5:
if getal < 3:
print(f"{getal} is laag")
getal += 1
else:
print(f"{getal} is hoog")
getal += 1
- Waarom is dit levensgevaarlijke code om te schrijven?
Bekijk het antwoord
De getal += 1 staat binnen de if- én de else-tak. Als één van die takken faalt of vergeten wordt, blijft getal voor altijd dezelfde waarde — en dan herhaalt de loop oneindig. Plaats de ophoging liever buiten de if/else, op het niveau van de while-loop zelf, zodat hij altijd gebeurt.
- Wat gebeurt er als je per ongeluk een van de
getal += 1regels vergeet?
Bekijk het antwoord
Stel: je laat de getal += 1 in de else-tak weg. Zodra getal 3 wordt (en de else-tak in werking treedt), wordt hij niet meer opgehoogd. De voorwaarde getal <= 5 blijft eeuwig True, en de loop print "3 is hoog" onophoudelijk. Dit is een oneindige loop.
- Hoe voorkom je de Infinite Loop (oneindige loop)? Wat was de positie van de
getal += 1in de originele code?
Bekijk het antwoord
In de originele code stond getal += 1 na de hele if/else, op hetzelfde inspring-niveau als de if. Daardoor liep hij in elke ronde gegarandeerd één keer. Vuistregel: zet de update-stap zo dicht mogelijk bij de while-regel, niet diep weggestopt in een tak.
Er gaat iets mis
De klassieke while-fout: je vergeet de voorwaarde te updaten.
getal = 5
while getal > 0:
print(getal)
# Ergens vergeten: getal -= 1
Wat gebeurt er? De Playground print eindeloos 5 en loopt vast. Je moet op Stop klikken.
Waarom? getal blijft 5, dus getal > 0 blijft True, dus de loop stopt nooit.
Oplossing: Zorg dat de variabele in de voorwaarde binnen de loop verandert:
getal = 5
while getal > 0:
print(getal)
getal -= 1 # zonder deze regel: oneindige loop
Heb je per ongeluk een oneindige loop gemaakt? Klik op Stop in de Playground. In een echt Python-programma stop je hem met Ctrl + C.
Modify
Tijd om te oefenen met de while loop. Pas je code in de Playground aan voor de volgende doelen:
Opdracht A: Bankrekening Spekken
We hebben een startsaldo van 50 euro. We willen iedere maand sparen totdat we minimaal 200 euro hebben. Iedere maand komt er 15 euro bij. Hoeveel maanden duurt dat?
Gebruik een while-loop om door te rekenen totdat saldo >= 200.
saldo = 50
maanden = 0
while saldo < 200:
# 1. Tel 15 euro bij saldo op
# 2. Hoog de variabele maanden met 1 op
print(f"Binnen {maanden} maanden heb je je doelbedrag bereikt!")Opdracht B: Explosie met While True
Soms wil je dat een programma écht eindeloos doordraait, bijvoorbeeld het beginscherm van een game, of de klok van je magnetron. Dit heet een Oneindige Loop.
Je kunt zo'n loop forceren door while True: te typen. Maar wees gewaarschuwd: de enige manier om hem te stoppen is door letterlijk het programma te laten crashen.
Zet de code hieronder in en probeer uit te vinden hoe je deze stopt!
while True:
print("DANGER! KERNREACTOR OVERVERHIT!")
Make: Raket-aftellen
Schrijf een while-loop die aftelt van 10 naar 1 en daarna "Lift-off!" print.
Verwachte uitvoer:
10
9
8
...
2
1
Lift-off!
teller = 10
while ...:
print(teller)
...
print("Lift-off!")💡 Tip
De voorwaarde is teller > 0. Binnen de loop: print + verlaag met teller -= 1.
✅ Oplossing
teller = 10
while teller > 0:
print(teller)
teller -= 1
print("Lift-off!")
Make Bonus: Verdubbelen als een virus (Pittig)
Een computervirus begint met 1 geïnfecteerd bestand. Elke seconde verdubbelt het aantal. Print per seconde hoeveel bestanden geïnfecteerd zijn, totdat het aantal boven 1.000.000 uitkomt. Print daarna "Systeem is gekaapt!".
infecties = 1 secondes = 0 while ...: # jouw logica hier
💡 Tip
Drie stappen binnen de loop:
- Print het huidige aantal infecties.
- Verdubbel
infecties:infecties = infecties * 2(ofinfecties *= 2). - Hoog
secondesmet 1 op.
De voorwaarde is infecties <= 1_000_000.
✅ Oplossing
infecties = 1
secondes = 0
while infecties <= 1_000_000:
print(infecties)
infecties *= 2
secondes += 1
print("Systeem is gekaapt!")