Ga naar hoofdinhoud

9b Return

Je functies met parameters tonen iets op het scherm. Wil je met het resultaat verder rekenen, dan laat je de functie het teruggeven met return. Die waarde kun je opslaan of in een berekening gebruiken.

Een waarde teruggeven​

def verdubbel(getal):
return getal * 2

resultaat = verdubbel(5)
print(resultaat) # 10
print(verdubbel(7) + 1) # 15
  • return getal * 2 geeft de uitkomst terug uit de functie.
  • resultaat = verdubbel(5) vangt die waarde op.
  • Je kunt het resultaat ook direct in een berekening of f-string gebruiken.
def verdubbel(getal):
print(getal * 2)

x = verdubbel(5)
print(x)
Voorspel
Wat zet dit programma op het scherm?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Het verschil tussen print en return op een rij:

print()return
Wat doet het?Toont iets op het schermGeeft een waarde terug uit de functie
Kun je het opslaan?NeeJa: x = mijn_functie(...)
Geschikt voorOutput tonenBerekeningen, beslissingen

Een functie zónder return levert None op. Maak je een functie om een waarde te berekenen, dan hoort er een return in. Toont de functie alleen iets, dan is print() genoeg.

Er gaat iets mis​

Rekenen met een functie zonder return

def verdubbel(getal):
print(getal * 2)

print(verdubbel(5) + 1)

Uitvoer:

10
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

De functie print 10 en geeft None terug, en bij None kun je geen 1 optellen. Vervang de print in de functie door return.

Code na return

def verdubbel(getal):
return getal * 2
print("Klaar met verdubbelen")

print(verdubbel(5)) # 10

Klaar met verdubbelen komt nooit op het scherm. Bij return stopt de functie meteen, dus wat eronder staat draait niet. Zet zo'n regel boven de return.

Eerst op papier

Speel dit eerst na zonder computer, als rollenspel met briefjes: De functiemachine. Je docent kan de hand-out printen.


Opdracht 9b.1: Kwadraat​

Schrijf een functie kwadraat(getal) die getal * getal teruggeeft. Sla het resultaat op en print het.

# Schrijf hier je code
Klik hier voor een tip.

return getal * getal binnen de functie. Daarna resultaat = kwadraat(6) en print(resultaat).

Klik hier voor de oplossing.
def kwadraat(getal):
return getal * getal

resultaat = kwadraat(6)
print(resultaat)

Uitvoer: 36.

def kwadraat(getal):
    return getal * getal

resultaat = kwadraat(6)
print(resultaat)

Opdracht 9b.2: Max van twee​

Schrijf een functie max_van_twee(a, b) die het grootste van twee getallen teruggeeft. Gebruik if/else in de functie.

Verwachte uitvoer:

20
7
5
# Schrijf hier je code
Klik hier voor een tip.

Als a > b, return a. Anders return b. Bij gelijke getallen maakt het niet uit welke je teruggeeft.

Klik hier voor de oplossing.
def max_van_twee(a, b):
if a > b:
return a
else:
return b

print(max_van_twee(10, 20))
print(max_van_twee(7, 3))
print(max_van_twee(5, 5))
def max_van_twee(a, b):
    if a > b:
        return a
    else:
        return b

print(max_van_twee(10, 20))
print(max_van_twee(7, 3))
print(max_van_twee(5, 5))

Opdracht 9b.3: Rekenmachine met functies​

Bouw vier functies die elk een resultaat teruggeven: optellen, aftrekken, vermenigvuldigen, delen. Bij delen moet je eerst checken of b niet 0 is — als dat zo is, geef de tekst "Fout: delen door 0!" terug.

Verwachte uitvoer (bij a = 20, b = 4):

20 + 4 = 24
20 - 4 = 16
20 x 4 = 80
20 / 4 = 5.0
# Schrijf hier je code
Klik hier voor een tip.

aftrekken en vermenigvuldigen zijn één regel (return a - b, return a * b). Bij delen: if b == 0: → return de foutmelding, anders return a / b.

Klik hier voor de oplossing.
def optellen(a, b):
return a + b

def aftrekken(a, b):
return a - b

def vermenigvuldigen(a, b):
return a * b

def delen(a, b):
if b == 0:
return "Fout: delen door 0!"
else:
return a / b

a = 20
b = 4

print(f"{a} + {b} = {optellen(a, b)}")
print(f"{a} - {b} = {aftrekken(a, b)}")
print(f"{a} x {b} = {vermenigvuldigen(a, b)}")
print(f"{a} / {b} = {delen(a, b)}")

Je kunt nu zelf functies schrijven. In het hoofdstuk Modules haal je functies binnen die anderen al voor je schreven, met import.

def optellen(a, b):
    return a + b

def aftrekken(a, b):
    return a - b

def vermenigvuldigen(a, b):
    return a * b

def delen(a, b):
    if b == 0:
        return "Fout: delen door 0!"
    else:
        return a / b

a = 20
b = 4

print(f"{a} + {b} = {optellen(a, b)}")
print(f"{a} - {b} = {aftrekken(a, b)}")
print(f"{a} x {b} = {vermenigvuldigen(a, b)}")
print(f"{a} / {b} = {delen(a, b)}")
Waar kom je dit later weer tegen?

Max-en-min returnt twee waardes tegelijk, en bij minimax geven functies scores aan elkaar door — de hele keten hangt aan return.