Ga naar hoofdinhoud

Stap 7: Het couplet met functies (return-waarden gebruiken)

info

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.