6c Een ronde overslaan met continue
Soms wil je in een loop bepaalde rondes overslaan. Wat denk je dat dit doet?
for i in range(6):
if i == 3:
continue
print(i)
Waarom is dit handig?
Zonder continue moet je de rest van de loop in een else stoppen:
for i in range(6):
if i == 3:
print("overslaan")
else:
print(i)
Bij één regel maakt dat weinig uit. Maar hoe meer code er in de loop staat, hoe fijner het is om bovenaan te zeggen "deze ronde niet" en daarna verder te schrijven zonder extra inspringen.
Let op: verwar continue niet met het verwante break, dat de
hele loop stopt in plaats van één ronde over te slaan. Dat is de
volgende les.
Er gaat iets mis
continue buiten de loop
for i in range(3):
print(i)
continue
Uitvoer:
SyntaxError: 'continue' not properly in loop
continue hoort in een loop, en die van jou springt niet ver genoeg in. Meestal hoort hij bij de if in de loop.
continue na de print
for i in range(6):
print(i)
if i == 3:
continue
Geen foutmelding, maar de 3 staat er toch: de print is al geweest als continue aan de beurt is. Zet de controle met continue bóven wat je wilt overslaan.
Opdracht 6c.1: Sla de vijf over
Print de getallen 0 t/m 9, behalve de 5.
# Schrijf hier je code
Klik hier voor een tip.
Check bovenin de loop met if i == 5: en gebruik dan continue.
Klik hier voor de oplossing.
for i in range(10):
if i == 5:
continue
print(i)
for i in range(10):
if i == 5:
continue
print(i)Opdracht 6c.2: Twee overslaan
Print de getallen 1 t/m 10, maar sla de 3 én de 7 over.
# Schrijf hier je code
Klik hier voor een tip.
Twee waardes in één conditie check je met or (uit les 5c):
if i == 3 or i == 7:.
Klik hier voor de oplossing.
for i in range(1, 11):
if i == 3 or i == 7:
continue
print(i)
for i in range(1, 11):
if i == 3 or i == 7:
continue
print(i)Opdracht 6c.3: Tellen wat overblijft (uitdaging)
Loop door de getallen 0 t/m 20. Sla alles over dat kleiner is dan 5 of groter dan 15. Print de getallen die overblijven, en print aan het eind hoeveel het er waren.
Verwachte uitvoer (laatste regel):
Aantal geprint: 11
# Schrijf hier je code
Klik hier voor een tip.
Maak vóór de loop een teller die op 0 begint. Na de continue-check
print je het getal en doe je teller = teller + 1. De eindprint staat
buiten de loop.
Klik hier voor de oplossing.
teller = 0
for i in range(21):
if i < 5 or i > 15:
continue
print(i)
teller = teller + 1
print(f"Aantal geprint: {teller}")
De continue bewaakt de poort: alleen getallen van 5 t/m 15 komen bij
de print en de teller.
teller = 0
for i in range(21):
if i < 5 or i > 15:
continue
print(i)
teller = teller + 1
print(f"Aantal geprint: {teller}")Dijkstra slaat knopen die al af zijn over met precies dit patroon: if node in bezocht: gevolgd door continue.