7 While-loop
Met een for-loop weet je van tevoren hoe vaak je herhaalt (bijvoorbeeld 5 keer met range(5)). Maar wat als je niet weet hoe vaak — alleen dat je moet doorgaan totdat iets klaar is? Daarvoor is de while-loop: hij herhaalt zolang een voorwaarde True is.
Een simpele while-loop
getal = 5
while getal > 0:
print(getal)
getal -= 1
print("Start!")
Uitvoer:
5
4
3
2
1
Start!
Drie ingrediënten die je altijd nodig hebt:
- Een variabele met een startwaarde (
getal = 5). - Een voorwaarde achter
while(getal > 0). - Een update-stap binnen de loop (
getal -= 1).
Vergeet je die update? Dan blijft getal voor altijd 5, blijft getal > 0 voor altijd True, en stopt de loop nooit. Dat heet een oneindige loop — je browser of computer loopt vast. Klik dan op de Stop-knop.
getal -= 1 is een korte schrijfwijze voor getal = getal - 1. Hetzelfde geldt voor +=, *= en /=.
Opdracht 7.1: Aftellen
Schrijf een while-loop die aftelt van 3 naar 1 en daarna "Klaar!" print.
# Schrijf hier je code
Klik hier voor een tip.
Voorwaarde: getal > 0. Binnen de loop: eerst printen, dan getal -= 1.
Klik hier voor de oplossing.
getal = 3
while getal > 0:
print(getal)
getal -= 1
print("Klaar!")
getal = 3
while getal > 0:
print(getal)
getal -= 1
print("Klaar!")Opdracht 7.2: Raket-aftellen
Tel af van 10 naar 1 en print daarna "Lift-off!".
Verwachte uitvoer:
10
9
8
...
2
1
Lift-off!
# Schrijf hier je code
Klik hier voor een tip.
Zelfde patroon als 7.1, alleen met startwaarde 10.
Klik hier voor de oplossing.
teller = 10
while teller > 0:
print(teller)
teller -= 1
print("Lift-off!")
teller = 10
while teller > 0:
print(teller)
teller -= 1
print("Lift-off!")Opdracht 7.3: Sparen tot je doelbedrag
Je hebt een startsaldo van 50 euro en spaart elke maand 15 euro bij. Tel met een while-loop hoeveel maanden je nodig hebt om minstens 200 euro te hebben.
Verwachte uitvoer:
Binnen 10 maanden heb je je doelbedrag bereikt!
# Schrijf hier je code
Klik hier voor een tip.
Voorwaarde: saldo < 200. Binnen de loop: saldo += 15 en maanden += 1.
Klik hier voor de oplossing.
saldo = 50
maanden = 0
while saldo < 200:
saldo += 15
maanden += 1
print(f"Binnen {maanden} maanden heb je je doelbedrag bereikt!")
saldo = 50
maanden = 0
while saldo < 200:
saldo += 15
maanden += 1
print(f"Binnen {maanden} maanden heb je je doelbedrag bereikt!")Opdracht 7.4: Virus dat verdubbelt
Een virus begint met 1 geïnfecteerd bestand en verdubbelt elke seconde. Print elke seconde het huidige aantal, totdat het boven 1 000 000 uitkomt. Print daarna "Systeem is gekaapt!".
# Schrijf hier je code
Klik hier voor een tip.
Drie stappen binnen de loop:
- Print
infecties. - Verdubbel:
infecties *= 2. - Hoog
secondesmet 1 op.
Voorwaarde: infecties <= 1_000_000.
Klik hier voor de oplossing.
infecties = 1
secondes = 0
while infecties <= 1_000_000:
print(infecties)
infecties *= 2
secondes += 1
print("Systeem is gekaapt!")
In de volgende les ga je code een naam geven zodat je hem makkelijk kunt hergebruiken — dat doe je met functies.
infecties = 1
secondes = 0
while infecties <= 1_000_000:
print(infecties)
infecties *= 2
secondes += 1
print("Systeem is gekaapt!")