Ga naar hoofdinhoud

Stap 6: Functies die tekst teruggeven (return)

info

Deze stap gebruikt return, uit Return.

In je couplet staan nu twee variabelen, met daaronder drie regels if en elif. Kijk wat die regels doen: ze zoeken de goede woorden bij een aantal flessen. "3 groene flessen", "1 groene fles", "geen groene flessen meer". Dat kan een functie doen die de tekst teruggeeft in plaats van hem te printen:

def staan(flessen):
if flessen == 1:
return "staat"
else:
return "staan"

print(staan(1)) # staat
print(staan(4)) # staan

Een functie met return kun je gebruiken waar je anders een stukje tekst zou schrijven, ook tussen de accolades van een f-string.

Opdracht: aantal en staan​

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

Schrijf boven couplet twee functies die tekst teruggeven. Het couplet blijft in deze stap zoals het is; dat pas je in stap 7 aan.

  1. staan(flessen), zoals hierboven: "staat" bij één fles, anders "staan".
  2. aantal(flessen), die voor elk aantal flessen de goede woorden teruggeeft:
aantal(3)aantal(1)aantal(0)
"3 groene flessen""1 groene fles""geen groene flessen meer"

Test ze los: zet onderaan je programma tijdelijk een paar print-regels die laten zien wat de functies teruggeven. Onder het lied verwacht je dan:

3 groene flessen
1 groene fles
geen groene flessen meer
staat
# Plak hier je programma uit stap 5
Klik hier voor een tip.

Voor aantal zijn er drie gevallen: nul, één en al het andere. Elk geval krijgt een eigen return. Kijk naar staan hierboven: zo ziet een functie met twee gevallen eruit.

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):
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.")


for flessen in range(3, 0, -1):
couplet(flessen)
print()

De testregels eronder, met wat ze printen:

print(aantal(3)) # 3 groene flessen
print(aantal(1)) # 1 groene fles
print(aantal(0)) # geen groene flessen meer
print(staan(1)) # staat

Kloppen ze? Haal de testregels dan weg. Het lied zelf is nog niet veranderd: dat doe je in stap 7.

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

Door naar stap 7: het couplet met functies.