← Python/Kiezen en herhalen
Les 5 van 8
MODULE 02 · 05◷ 20 min

Laat een while-lus stoppen

Na deze les kun je
  • Een lusvoorwaarde en voortgang samen ontwerpen
  • Een teller en spoor van rondes bijhouden
  • Een al bereikte grens zonder extra ronde afhandelen

Een eenvoudige timer telt af tot er geen tijd meer over is. Je wilt niet vooraf alle aftelregels uitschrijven: de huidige stand moet bepalen of er nog een ronde nodig is. Daarvoor gebruik je een while-lus, waarbij je zelf zorgt dat de stand verandert.

Eerst controleren, dan herhalen

Een while-lus herhaalt zijn blok zolang de voorwaarde waar is. Python controleert die voorwaarde vóór iedere ronde, dus ook vóór de eerste. Is het antwoord meteen onwaar, dan voert Python het blok geen enkele keer uit.

Bij een for-lus met range krijgt de lusvariabele automatisch de volgende waarde. Bij while schrijf je de voortgang zelf: een wijziging waardoor de voorwaarde uiteindelijk onwaar kan worden. Zonder zo'n wijziging kan de lus steeds met dezelfde stand blijven beginnen.

Een teller houdt bij hoeveel rondes echt zijn uitgevoerd. Begin die vóór de lus op nul en verhoog hem binnen het blok met één. De teller beschrijft iets anders dan de stand waarop je voorwaarde controleert.

Een timer in stappen van twee

Deze timer is een rekenmodel: er wordt niet echt gewacht tussen de rondes. Hij begint op zeven en vermindert de stand telkens met twee.

Aftellen in vaste stappen
remaining = 7
ticks = 0
while remaining > 0:
    remaining -= 2
    ticks += 1
    print(remaining)
print(f"Rondes: {ticks}")
Verwachte uitvoer
5
3
1
-1
Rondes: 4

Met remaining -= 2 trek je twee van de huidige stand af. Dit betekent hier hetzelfde als remaining = remaining - 2. De print volgt op die wijziging en toont dus de stand ná de ronde, niet de stand waarmee je begon.

Stand vóór controleVoorwaarde waar?Stand na de ronde
7Ja5
5Ja3
3Ja1
1Ja-1
-1NeeGeen nieuwe ronde

De laatste stap gaat voorbij nul. Dat mag bij deze gekozen regel: Python controleert vóór een hele stap en maakt de stap niet vanzelf kleiner. Er zijn vier rondes uitgevoerd, ook al liggen zeven en nul geen vier eenheden uit elkaar.

Denk bij een while-lus steeds aan drie dingen: de beginstand, de voorwaarde en de wijziging per ronde. Controleer daarna wat er gebeurt als de beginstand al klaar is. Een correcte lus moet dan vaak helemaal niets doen.

Een extra ronde op de grens

Een vergelijking met >= neemt nul mee, terwijl > dat niet doet. In dit foutvoorbeeld staat de timer al op nul, maar wordt hij toch nog één keer verlaagd.

Nul ten onrechte nog verwerken
remaining = 0
ticks = 0
while remaining >= 0:
    remaining -= 1
    ticks += 1
print(remaining)
print(ticks)
Verwachte uitvoer
-1
1

De uitvoer toont min één en één uitgevoerde ronde. Dat past niet bij de bedoeling “aftellen zolang er tijd over is”. Met remaining > 0 zou de lus bij deze beginwaarde meteen worden overgeslagen.

Een lus die nooit eindigt is een andere fout. Als de gecontroleerde waarde niet verandert en de voorwaarde waar blijft, kom je niet bij de regels na de lus. Codelab beëindigt zulke uitvoeringen; controleer dan eerst of je voortgang binnen het blok staat.

Nu jij

Je laadt een fictieve meter met stappen van drie tot minstens tien. Houd naast de eindstand ook het aantal rondes en de standen ná iedere verhoging bij. De tests bevatten een beginstand die al klaar is en een situatie waarin de laatste stap de grens passeert.

Testinvoer · 4 varianten

Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.

Vier laadstappen
0
Precies op tien
1
Eén laadstap
7
Al op de grens
10
AAN DE SLAG 0/4
1

Maak voortgang naar de grens

Herhaal zolang level < 10 en verhoog iedere ronde met drie. Toon de eindstand op regel 1.

2

Tel uitgevoerde rondes

Begin turns op nul en tel iedere ronde één op. Toon het aantal op regel 2.

3

Laat het verloop zien

Toon op regel 3 alle meterstanden na iedere verhoging, met spaties ertussen.

4

Meet de overschrijding

Toon op regel 4 hoeveel de eindstand boven tien ligt.

Dit neem je mee

  • While controleert de voorwaarde vóór elke ronde.
  • Zorg zelf dat de gecontroleerde waarde voortgang maakt.
  • Houd stand, rondeteller en eventuele overschrijding uit elkaar.

Hierna leer je een lopende herhaling tussentijds stoppen of één ronde overslaan.

main.py
UitvoerPython
›
›_

Hier komt je resultaat.

Voer je code uit en ontdek
wat je hebt gemaakt.

0/4 stappen
EVEN MEEKIJKEN

Bekijk hoe het kan.

Je mag de oplossing bekijken. Deze poging telt dan niet mee als afgeronde les. Met Reset kun je daarna opnieuw zelf oefenen.