Ga naar hoofdinhoud

Stap 2: Blijven raden (while)

info

Deze stap gebruikt de while-loop uit While-loop.

Na één gok stopt je programma, ook als hij fout was. Je wilt dat het blijft vragen tot het getal geraden is. Hoe vaak dat is, weet je van tevoren niet: de ene speler heeft het na drie keer, de andere na tien. Dat is werk voor een while-loop.

Opdracht: raden tot het goed is​

Plak je programma uit stap 1 in het veld. Ben je het kwijt, neem dan de oplossing van stap 1.

Laat het programma blijven vragen en antwoorden, tot de gok goed is.

Verwachte uitvoer als je 50, 25 en 37 typt:

Raad een getal van 1 tot 100: 50
Te hoog.
Raad een getal van 1 tot 100: 25
Te laag.
Raad een getal van 1 tot 100: 37
Geraden.
# Plak hier je programma uit stap 1
Klik hier voor een tip.

Bedenk eerst welke regels elke ronde opnieuw moeten gebeuren: die gaan de loop in. De voorwaarde van de loop zegt wanneer er nog geraden moet worden. Python kijkt al vóór de eerste ronde naar die voorwaarde, dus de gok moet dan al een waarde hebben. Kies er een die nooit het geheim is.

Klik hier voor de oplossing.
geheim = 37
gok = 0
while gok != geheim:
gok = int(input("Raad een getal van 1 tot 100: "))
if gok > geheim:
print("Te hoog.")
elif gok < geheim:
print("Te laag.")
else:
print("Geraden.")

Uitvoer bij 50, 25 en 37:

Raad een getal van 1 tot 100: 50
Te hoog.
Raad een getal van 1 tot 100: 25
Te laag.
Raad een getal van 1 tot 100: 37
Geraden.

Na Geraden. is gok gelijk aan geheim. De voorwaarde is dan niet meer waar, en de loop stopt.

Er gaat iets mis​

Het programma print steeds Te hoog. en vraagt niets meer.

Oorzaak: de input staat boven de loop in plaats van erin. Dan krijgt gok één keer een waarde en verandert hij nooit meer. Is die eerste gok fout, dan blijft de voorwaarde voor altijd waar: een oneindige loop.

Oplossing: zet de regel met input in de loop. Die regel is de update-stap van je loop. De speeltuin heeft geen stopknop: het tabblad loopt vast, en je moet de pagina herladen. Je code is dan weg, dus kopieer hem eerst als je twijfelt of je loop stopt.

Kopieer je programma voordat je verdergaat: de editor bewaart het niet.

Door naar stap 3: pogingen tellen.