6d Stoppen met break
saldo = 0
for week in range(1, 11):
saldo = saldo + 3
print(f"Week {week}: {saldo} euro")
if saldo >= 20:
print("Genoeg gespaard.")
break
De loop staat op tien weken, maar hij haalt er zeven. Zodra saldo de 20 bereikt, stapt break uit de loop en gaat het programma verder onder de loop.
saldo = 0
for week in range(1, 11):
saldo = saldo + 3
print(f"Week {week}: {saldo} euro")
if saldo >= 20:
print("Genoeg gespaard.")
breakWat break precies stopt
break stopt de hele loop, niet één ronde. De rondes die nog zouden komen vervallen, en Python gaat verder met de eerste regel ná de loop:
for getal in range(1, 6):
if getal == 3:
break
print(getal)
print("Klaar")
Uitvoer:
1
2
Klaar
Bij getal is 3 stopt de loop. De 3 wordt niet meer geprint, 4 en 5 ook niet — maar Klaar wél, want die regel staat buiten de loop.
for getal in range(1, 6):
if getal == 3:
break
print(getal)
print("Klaar")break versus continue
Je kent continue al uit 6c. De twee lijken op elkaar en doen iets heel anders:
continue | break | |
|---|---|---|
| Wat stopt er | deze ronde | de hele loop |
| Gaat verder bij | de volgende ronde | de eerste regel ná de loop |
| Rest van de rondes | komt gewoon | vervalt |
break gebruik je als je iets gevonden hebt of als er een grens bereikt is: doorzoeken heeft dan geen zin meer.
Tip: break werkt ook in een while-loop, en juist daar zie je hem veel. Dat komt in de volgende les.
Er gaat iets mis
SyntaxError: 'break' outside loop
Oorzaak: je break staat niet in een loop. Meestal is hij te ver naar links ingesprongen en hoort hij eigenlijk bij de if binnen de loop.
Oplossing: zet break binnen het ingesprongen blok van de for of while.
# FOUT
for getal in range(5):
print(getal)
break
# GOED
for getal in range(5):
print(getal)
break
Opdracht 6d.1: Stop bij de eerste
Print de getallen 1 tot en met 20, maar stop zodra je een getal tegenkomt dat groter is dan 6.
Verwachte uitvoer:
1
2
3
4
5
6
# Schrijf hier je code
Klik hier voor een tip.
Loop met range(1, 21). Zet de if met break bóven de print, anders wordt de 7 nog geprint voordat je stopt.
Klik hier voor de oplossing.
for getal in range(1, 21):
if getal > 6:
break
print(getal)
De volgorde binnen de loop bepaalt alles: controleren en dan pas printen.
for getal in range(1, 21):
if getal > 6:
break
print(getal)Opdracht 6d.2: Wachtwoord raden
Je hebt drie pogingen om het getal 4 te raden. De pogingen staan vast: eerst 2, dan 4, dan 7. Print bij elke poging wat je probeert, en stop met break zodra het klopt. Print daarna Binnen!.
Verwachte uitvoer:
Poging: 2
Poging: 4
Binnen!
# Schrijf hier je code
Klik hier voor een tip.
Je hebt nog geen lijsten gehad, dus tel gewoon met range(1, 4) en gebruik if/elif om te bepalen welk getal die poging is. Of eenvoudiger: schrijf de drie pogingen onder elkaar in één loop met range(3) en reken de poging uit.
Klik hier voor de oplossing.
for poging in range(1, 4):
if poging == 1:
getal = 2
elif poging == 2:
getal = 4
else:
getal = 7
print(f"Poging: {getal}")
if getal == 4:
print("Binnen!")
break
De derde poging wordt nooit uitgevoerd: break stopt de loop na de tweede.
for poging in range(1, 4):
if poging == 1:
getal = 2
elif poging == 2:
getal = 4
else:
getal = 7
print(f"Poging: {getal}")
if getal == 4:
print("Binnen!")
breakOpdracht 6d.3: Break of continue? (uitdaging)
Print de getallen 1 tot en met 10, maar sla 5 over en stop helemaal bij 8.
Verwachte uitvoer:
1
2
3
4
6
7
# Schrijf hier je code
Klik hier voor een tip.
Je hebt allebei nodig: continue voor de 5, break voor de 8. Let op dat de 8 zelf níét geprint wordt.
Klik hier voor de oplossing.
for getal in range(1, 11):
if getal == 5:
continue
if getal == 8:
break
print(getal)
Bij 5 slaat hij één ronde over en gaat door met 6. Bij 8 stopt de loop, dus 8, 9 en 10 komen er niet.
for getal in range(1, 11):
if getal == 5:
continue
if getal == 8:
break
print(getal)