Ga naar hoofdinhoud

Stap 4: Eén fles is anders (if en elif)

info

Deze stap gebruikt if en elif, uit If en else en And, or en elif.

Het lied moet op twee plekken anders:

  • bij één fles: "1 groene fles staat" in plaats van "1 groene flessen staan";
  • als de laatste fles valt: "dan staan er geen groene flessen meer".

Een handige truc om te testen: laat de loop bij 3 beginnen in plaats van bij 10. Dan zie je de lastige coupletten meteen, zonder eerst zeven gewone te lezen.

Opdracht: een kloppend lied​

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

Laat het lied kloppen bij één fles en bij nul flessen. Werk met twee variabelen die per ronde de goede tekst krijgen, en print het couplet met die twee:

  1. nu: wat er aan het begin van het couplet aan de muur staat, zoals "3 groene flessen staan" of "1 groene fles staat".
  2. straks: wat er na de val overblijft, zoals "staan er 2 groene flessen", "staat er 1 groene fles" of "staan er geen groene flessen meer".

Verwachte uitvoer als de loop bij 3 begint:

3 groene flessen staan aan de muur,
3 groene flessen staan aan de muur,
en als er één groene fles valt,
dan staan er 2 groene flessen aan de muur.

2 groene flessen staan aan de muur,
2 groene flessen staan aan de muur,
en als er één groene fles valt,
dan staat er 1 groene fles aan de muur.

1 groene fles staat aan de muur,
1 groene fles staat aan de muur,
en als er één groene fles valt,
dan staan er geen groene flessen meer aan de muur.
# Plak hier je programma uit stap 3
Klik hier voor een tip.

Geef nu en straks eerst de gewone tekst, met het aantal erin. Daarna schrijf je alleen nog de uitzonderingen: een if die een variabele een andere waarde geeft, overschrijft de gewone. Voor nu is er één uitzondering. Voor straks zijn er twee: er blijft er één over, of er blijft niets over. Twee uitzonderingen op dezelfde variabele schrijf je met if en elif.

Klik hier voor de oplossing.
for flessen in range(3, 0, -1):
nu = f"{flessen} groene flessen staan"
straks = f"staan er {flessen - 1} groene flessen"
if flessen == 1:
nu = "1 groene fles staat"
if flessen - 1 == 1:
straks = "staat er 1 groene fles"
elif flessen - 1 == 0:
straks = "staan er geen groene flessen meer"

print(f"{nu} aan de muur,")
print(f"{nu} aan de muur,")
print("en als er één groene fles valt,")
print(f"dan {straks} aan de muur.")
print()

Uitvoer:

3 groene flessen staan aan de muur,
3 groene flessen staan aan de muur,
en als er één groene fles valt,
dan staan er 2 groene flessen aan de muur.

2 groene flessen staan aan de muur,
2 groene flessen staan aan de muur,
en als er één groene fles valt,
dan staat er 1 groene fles aan de muur.

1 groene fles staat aan de muur,
1 groene fles staat aan de muur,
en als er één groene fles valt,
dan staan er geen groene flessen meer aan de muur.

Klopt het? Zet de 3 dan terug op 10.

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

Door naar stap 5: een functie voor één couplet.