Ga naar hoofdinhoud

Bouwsteen 3 — twee waardes tegelijk teruggeven

Hier bouw je op verder

Leerdoel: je leert hoe je twee waardes uit een functie returnt met een tuple, en hoe je ze aan de andere kant weer uitpakt.

Wat we willen

Een functie die (klein, groot) teruggeeft, zodat de aanroeper er allebei mee verder kan.

Twee waardes returnen

In Python:

return klein, groot # zonder haakjes
return (klein, groot) # met haakjes — betekent hetzelfde

Beide regels geven een tuple met twee elementen terug.

Voorspel

Wat denk je dat dit print?

def max_en_min(lijst):
klein = groot = lijst[0]
for waarde in lijst:
if waarde < klein:
klein = waarde
elif waarde > groot:
groot = waarde
return klein, groot

resultaat = max_en_min([5, 2, 8, 1, 7, 4])
print(resultaat)
print(type(resultaat))
Antwoord
(1, 8)
<class 'tuple'>

De functie geeft een tuple terug — Python zet de twee waardes automatisch in een tuple, ook al schreef je return klein, groot zonder haakjes.

Run

Python
Code-omgeving wordt voorbereid…

Tuple uitpakken aan de andere kant

k, g = max_en_min([5, 2, 8, 1, 7, 4])
print(k) # 1
print(g) # 8

Links moeten er net zoveel namen staan als er elementen zitten in de tuple rechts. Anders krijg je een ValueError.

Run

Python
Code-omgeving wordt voorbereid…

Of: indexeren

Pak je de tuple niet uit, dan kun je de elementen ook met index benaderen:

r = max_en_min([5, 2, 8])
print(r[0]) # 2 (klein)
print(r[1]) # 8 (groot)

Maar uitpakken (k, g = …) is duidelijker — de namen zeggen wat je hebt.

Door naar het complete algoritme.