Sprint 5 · Functies & scope  ·  US2: Parameters & return

Als developer, wil ik functies die hun invoer via parameters krijgen en hun uitkomst met return teruggeven, zodat ik één functie met steeds andere waarden kan gebruiken en met de uitkomst verder kan rekenen.

Taak 3: Tuple unpacking

Meerdere waarden teruggeven en meteen uitpakken in variabelen.

Meerdere waarden in één keer: tuples

Functies geven meestal één waarde terug. Maar soms wil je meerdere waarden krijgen.

Zonder unpacking — lastig:

def get_user_info():
    return ("Alice", 30, "admin")

info = get_user_info()
name = info[0]
age = info[1]
role = info[2]  # Onhandig: indexen

Mét unpacking — schoon:

def get_user_info():
    return ("Alice", 30, "admin")

name, age, role = get_user_info()
# Alle waarden meteen beschikbaar!

Wat is een tuple?

coords = (10, 20)
# Kan met comma: coords = 10, 20
# Dezelfde waarden, compact

Interactieve demo — unpacking in actie

Kies een gebruiker:
Resultaat verschijnt hier...
Vuistregel: Gebruik unpacking om meerdere waarden uit één functieaanroep te halen. Schoon, leesbaar, en veilig.
>_ Probeer het voorbeeld

Twee functies die elk twee waarden teruggeven. De aanroeper pakt ze meteen uit.

Probeer daarna: pak het resultaat van min_max() uit in drie variabelen in plaats van twee. Welke fout verwacht je?

Klik op de knop om de uitvoer van het voorbeeld te zien.

Opdracht: Validatie met status en boodschap

Scenario: Je maakt een validatie-functie die checkt of een wachtwoord sterk genoeg is. Je wilt zowel weten OF het OK is, als WAAROM niet (als dat het geval is).

Starter-code:

password = "test123"

def validate_password(pwd):
    # TODO: return (True, None) als sterk
    # anders: (False, reden_waarom)
    # Sterk = minimaal 8 tekens EN minimaal 1 cijfer
    pass

# Test cases:
# validate_password("abc")        → (False, "Te kort")
# validate_password("abcdefgh")   → (False, "Geen cijfer")
# validate_password("abc12345")   → (True, None)

Acceptatiecriteria:

  • Functie geeft tuple terug: (bool, string of None)
  • (True, None) als wachtwoord geldig is
  • (False, boodschap) als wachtwoord ongeldig is met duidelijke reden
  • Minimaal 3 test cases met unpacking: is_valid, reason = validate_password(...)
  • Controles: lengte ≥8 EN minimaal 1 cijfer