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 2: Default parameters

Waarom dezelfde waarde steeds herhalen? Geef een parameter een standaardwaarde.

Het probleem: dezelfde waarde steeds opnieuw typen

Veel functies hebben parameters die meestal hetzelfde zijn. Elke keer weer dezelfde waarde meegeven wordt vervelend.

Zonder default:

def greet(name, greeting):
    print(f"{greeting}, {name}!")

greet("Alice", "Hallo")
greet("Bob", "Hallo")
greet("Charlie", "Hallo")  # Steeds "Hallo" herhalen...

Mét default:

def greet(name, greeting="Hallo"):
    print(f"{greeting}, {name}!")

greet("Alice")         # Gebruikt "Hallo"
greet("Bob")           # Gebruikt "Hallo"
greet("Charlie", "Hi") # Overschrijft met "Hi"

Interactieve demo

Invoer:
Output verschijnt hier...
Vuistregel: Gebruik defaults voor waarden die meestal hetzelfde zijn. Defaults staan NA verplichte parameters.
>_ Probeer het voorbeeld

Twee functies met standaardwaarden. Let op welke aanroepen de standaard gebruiken en welke hem overschrijven.

Probeer daarna: zet in greet() de parameter met de standaardwaarde vóór name. Welke fout krijg je?

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

Opdracht: Verzendkosten van een webshop

Scenario: een webshop verstuurt bijna alles gewoon naar Nederland. Soms gaat een pakket naar België, en soms kiest een klant voor express. De verzendkosten zijn:

SituatieKosten
Nederland, gewone verzending€ 4,95
België, gewone verzending€ 6,95
Bestelbedrag vanaf € 50gewone verzending gratis
Express€ 5,00 extra, ook bij een gratis verzending

Je taak: schrijf één functie die de verzendkosten teruggeeft. De meest voorkomende situatie — Nederland, geen express — moet je kunnen aanroepen met alleen het bestelbedrag.

Acceptatiecriteria:

  • De functie heeft één verplichte parameter (het bestelbedrag); land en express hebben een standaardwaarde
  • Bij € 20 naar Nederland komt er 4.95 uit, bij € 20 naar België 6.95
  • Bij precies € 50 is de gewone verzending gratis; bij € 49,99 niet
  • Express kun je meegeven zonder het land te noemen, en telt € 5 op bij de uitkomst
  • De functie print niets; je test minstens zes aanroepen en print de uitkomsten daarbuiten