Stap 2: Een rij staven (lijsten)
Deze stap gebruikt een lijst en een for-loop over een lijst, uit Lijsten, en += uit While-loop.
Dit zijn de minuten per dag van de klas, voor vijf soorten apps:
minuten = [65, 110, 80, 45, 30]
Voor elk getal wil je een staaf. Vijf keer staaf() met de hand aanroepen
kan, maar komt er een getal bij, dan moet je weer een regel schrijven. Een
for-loop over de lijst geeft je elk getal om de beurt:
minuten = [65, 110, 80, 45, 30]
for waarde in minuten:
print(waarde)
Uitvoer:
65
110
80
45
30
Opdracht: een staaf per getal
Plak je programma uit stap 1 in het veld. Ben je het kwijt, neem dan de oplossing van stap 1.
Zet de lijst minuten bovenaan, onder import turtle. Haal de drie losse
aanroepen van staaf() weg, en teken met een for-loop een staaf voor elk
getal in de lijst. De eerste staaf staat op x = -200, en elke volgende 80
verder naar rechts.
# Plak hier je programma uit stap 1
Klik hier voor een tip.
Bewaar de plek van de volgende staaf in een variabele plek. Die begint
vóór de loop op de plek van de eerste staaf. In de loop teken je een staaf
op plek, met het getal van deze ronde als hoogte, en daarna schuif je
plek op naar de volgende.
Klik hier voor de oplossing.
import turtle
minuten = [65, 110, 80, 45, 30]
def staaf(x, hoogte):
turtle.penup()
turtle.goto(x, -100)
turtle.pendown()
turtle.fillcolor("skyblue")
turtle.begin_fill()
for zijde in range(2):
turtle.forward(60)
turtle.left(90)
turtle.forward(hoogte)
turtle.left(90)
turtle.end_fill()
plek = -200
for waarde in minuten:
staaf(plek, waarde)
plek += 80
turtle.hideturtle()
Bij staaf(plek, waarde) krijgt de parameter x van staaf de waarde van
plek, en hoogte die van waarde. Komt er een getal bij in de lijst, dan
komt er een staaf bij. De rest van het programma blijft hetzelfde.
Er gaat iets mis
Je ziet maar één staaf, met streepjes erin.
Oorzaak: plek = -200 staat in de loop in plaats van erboven. Dan
begint plek elke ronde opnieuw op -200, en tekent de schildpad alle vijf de staven
op dezelfde plek, over elkaar heen. De streepjes zijn de bovenkanten van de
lagere staven.
Oplossing: zet plek = -200 boven de loop. Dan krijgt plek één keer
een beginwaarde, en schuift hij in de loop steeds verder.
Kopieer je programma voordat je verdergaat: de editor bewaart het niet.
Door naar stap 3: de getallen erbij.