Direct naar de hoofdinhoud
Module 2 · Les 3 van 47/36 in de cursus~10 min
Modulelessen (3/4)

breken, doorgaan en anders in lussen

Binnen een lus (zowel for als while) kun je de normale stroom wijzigen met drie constructies:

  • break — verlaat de lus onmiddellijk.
  • continue — sla de rest van het lichaam over en springt naar de volgende iteratie.
  • else (op de lus) — uitgevoerd wanneer de lus eindigt zonder een break.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break stopt de lus zo snel mogelijk. Alles na break in de de hoofdtekst van de huidige iteratie wordt NIET uitgevoerd.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

Beschouw continue als "ga naar de volgende iteratie". Het wordt gebruikt om items te filteren zonder nog een inspringingsniveau toe te voegen.

else op de lus (pythonisch idioom)

Een eigenaardigheid van Python: lussen kunnen ook een else hebben, alleen uitgevoerd als de lus natuurlijk beëindigd (zonder break). Het is perfect voor zoekopdrachten:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Lees het als: "voor elke n in de lijst; als je de tak break neemt, sla deze dan over de anders; voer anders de else" uit.

Geneste lussen: break verlaat alleen de binnenste

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break verlaat alleen de for y, niet de for x. Om beide af te sluiten, moet u a gebruiken vlag of een functie + return.

De ongebruikelijke lus...anders-constructie

In Python kunnen zowel de for als de while lussen een optionele else clausule bevatten. Het blok else wordt alleen uitgevoerd als de lus normaal wordt voltooid (d.w.z. zonder een instructie break tegen te komen). Dit is erg handig voor zoekalgoritmen (bijvoorbeeld 'zoeken naar een element: indien gevonden, breek het; anders rapporteer dat het niet is gevonden').

Probeer het zelf

Oefening#python.m2.l3.e1
Pogingen: 0Laden…

Gegeven de lijst 'getallen = [10, 15, 20, 25, 30, 35]', zoek het eerste getal dat deelbaar is door 7 en wijs dit toe aan 'resultaat'. Als er geen bestaat, wijs dan -1 toe.

Editor laden…
Toon hint

35 is de eerste (en enige) deelbare waarde door 7 in de lijst.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#python.m2.l3.e2
Pogingen: 0Laden…

Bouw de lijst 'oneven_getallen' op met de oneven getallen van 1 tot en met 20 met behulp van een for-lus over bereik(1, 21) en ga door met het overslaan van de even getallen.

Editor laden…
Toon hint

Als n even is, ga dan verder; anders bijvoegen.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#python.m2.l3.e3
Pogingen: 0Laden…

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

Editor laden…
Toon hint

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

Oplossing beschikbaar na 3 pogingen