Ga naar hoofdinhoud

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)
Voorspel
Welke getallen zet dit programma op het scherm?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

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}")
Waar kom je dit later weer tegen?

Dijkstra slaat knopen die al af zijn over met precies dit patroon: if node in bezocht: gevolgd door continue.