Jij bent de loop
Een loop doet steeds hetzelfde, maar de variabelen veranderen elke ronde.
Wat er tussen twee print-regels gebeurt, zie je niet op het scherm. Op
papier wel: in een tracetabel schrijf je per ronde op wat elke variabele
is.
Wat je nodig hebt
- Een geprinte hand-out en een potlood per leerling. Werk eerst alleen, vergelijk dan met je buur.
- Ongeveer 25 minuten.
Zo werkt het
- Gok eerst wat het programma print, en schrijf je gok op.
- Voer het programma uit alsof jij Python bent. Na elke ronde vul je één rij van de tabel in.
- Klopt je gok? Zo niet: in welke ronde ging het anders dan je dacht?
Programma 1
punten = 0
for ronde in range(1, 5):
punten = punten + ronde * 2
if punten > 10:
print("Over de 10 in ronde", ronde)
print("Eindstand:", punten)
Mijn gok: ______
ronde | punten aan het eind van de ronde | punten > 10? | Op het scherm |
|---|---|---|---|
| na de loop |
Programma 2
getal = 1
stappen = 0
while getal < 50:
getal = getal * 3
stappen = stappen + 1
print(getal, stappen)
Mijn gok: ______
| Ronde | getal < 50? (aan het begin) | getal | stappen |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 |
Programma 3
Dit programma zou moeten tellen hoe vaak de loop draait.
for ronde in range(3):
teller = 0
teller = teller + 1
print(teller)
Mijn gok: ______ Klopt het programma? Zo niet, wat moet er anders?
Bespreek na
- In programma 1 staat de
printmaar één keer in de code. Hoe vaak komt hij op het scherm? - Programma 2 stopt bij
getal < 50, maargetalis aan het eind groter dan 50. Hoe kan dat? - Wat is de regel voor een teller: waar zet je hem op 0?
Antwoorden
Zo kijk je je tabel na: het programma met een print op elke plek waar jij
een rij invulde. Dat is ook een manier om zelf een fout te zoeken.
Programma 1. De print staat in de loop, dus hij komt in elke ronde
waarin punten > 10 waar is: in ronde 3 en 4.
punten = 0
for ronde in range(1, 5):
punten = punten + ronde * 2
print("ronde", ronde, "punten", punten, punten > 10)
if punten > 10:
print("Over de 10 in ronde", ronde)
print("Eindstand:", punten)
Uitvoer:
ronde 1 punten 2 False
ronde 2 punten 6 False
ronde 3 punten 12 True
Over de 10 in ronde 3
ronde 4 punten 20 True
Over de 10 in ronde 4
Eindstand: 20
Programma 2. De voorwaarde kijkt Python alleen aan het begin van een
ronde. In ronde 4 is getal 27, dus de ronde begint, en daarin wordt het
81. Pas aan het begin van ronde 5 is getal < 50 niet meer waar.
getal = 1
stappen = 0
while getal < 50:
print("begin van de ronde:", getal, getal < 50)
getal = getal * 3
stappen = stappen + 1
print(getal, stappen)
Uitvoer:
begin van de ronde: 1 True
begin van de ronde: 3 True
begin van de ronde: 9 True
begin van de ronde: 27 True
81 4
Programma 3. Het print 1: elke ronde zet teller = 0 de teller terug.
Een teller begint vóór de loop:
teller = 0
for ronde in range(3):
teller = teller + 1
print(teller) # 3
Verder op de site
- Plak een programma in de playground en druk op Stap voor stap. Je ziet dan per stap de variabelen, net als in je tabel.
- In de les: 6a For-loop en 7 While-loop.