Stap 7: Het couplet met functies (return-waarden gebruiken)
Deze stap gebruikt de waarde die een functie teruggeeft, uit Return.
Je hebt nu aantal en staan, maar het couplet gebruikt ze nog niet: het
zoekt de woorden nog zelf op, met nu, straks en drie regels if en
elif. Wat aantal en staan teruggeven, kun je overal gebruiken waar nu
een stukje tekst staat, ook tussen de accolades van een f-string.
Opdracht: het couplet zonder if
Plak je programma uit stap 6 in het veld. Ben je het kwijt, neem dan de oplossing van stap 6.
Laat het couplet aantal en staan aanroepen in plaats van nu en
straks. De if-regels in couplet verdwijnen dan. De uitvoer blijft
precies hetzelfde:
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 6
Klik hier voor een tip.
Kijk per regel van het couplet wat er nu staat. De eerste twee regels gaan over het aantal flessen nu, de laatste over één fles minder. Welke functie geeft het aantal, en welke het werkwoord? Haal daarna de regels weg die niets meer doen, en draai opnieuw: komt er nog precies hetzelfde uit?
Klik hier voor de oplossing.
def aantal(flessen):
if flessen == 0:
return "geen groene flessen meer"
elif flessen == 1:
return "1 groene fles"
else:
return f"{flessen} groene flessen"
def staan(flessen):
if flessen == 1:
return "staat"
else:
return "staan"
def couplet(flessen):
print(f"{aantal(flessen)} {staan(flessen)} aan de muur,")
print(f"{aantal(flessen)} {staan(flessen)} aan de muur,")
print("en als er één groene fles valt,")
print(f"dan {staan(flessen - 1)} er {aantal(flessen - 1)} aan de muur.")
for flessen in range(3, 0, -1):
couplet(flessen)
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.
Het couplet is nu vier regels zonder één if. Alles wat met enkelvoud en
meervoud te maken heeft, zit in aantal en staan.
Kopieer je programma voordat je verdergaat: de editor bewaart het niet.
Door naar stap 8: het hele lied als functie.