Skip to content

Lösungen: Teil 9 - Funktionen Advanced

Lösung 9.1: Funktion mit Parameter

python
def begruesse(name):
    """Erstellt eine Begrüßung."""
    return f"Hallo, {name}!"

Alternative:

python
def begruesse(name):
    """Erstellt eine Begrüßung."""
    return "Hallo, " + name + "!"

Erklärung: Der Parameter name ist ein Platzhalter für den übergebenen Wert. Mit f-Strings können wir den Namen elegant in den Text einbetten.


Lösung 9.2: Funktion mit mehreren Parametern

python
def durchschnitt_zwei(a, b):
    """Berechnet den Durchschnitt von zwei Zahlen."""
    return (a + b) / 2

Erklärung: Die Funktion nimmt zwei Parameter a und b entgegen und gibt deren Durchschnitt zurück.

Beispiele:

  • durchschnitt_zwei(4, 6) → 5.0
  • durchschnitt_zwei(10, 20) → 15.0

Lösung 9.3: Funktion ruft Funktion auf

python
def verdopple(zahl):
    """Verdoppelt eine Zahl."""
    return zahl * 2

def verdopple_und_addiere_zehn(zahl):
    """Verdoppelt eine Zahl und addiert 10."""
    verdoppelt = verdopple(zahl)
    return verdoppelt + 10

Alternative (kürzer):

python
def verdopple_und_addiere_zehn(zahl):
    """Verdoppelt eine Zahl und addiert 10."""
    return verdopple(zahl) + 10

Erklärung:

  • Die Funktion verdopple_und_addiere_zehn ruft die Funktion verdopple auf
  • Das Ergebnis von verdopple(zahl) wird mit 10 addiert
  • Beispiel: verdopple_und_addiere_zehn(5)verdopple(5) gibt 10 zurück → 10 + 10 = 20

Lösung 9.4: Code Reading

Antworten:

  1. Was wird ausgegeben?

    25

  2. Ablauf - Welche Funktion ruft welche auf?

    • Hauptprogramm ruft berechne_summe_quadrate(3, 4) auf
    • berechne_summe_quadrate ruft berechne_quadrat(3) auf → gibt 9 zurück
    • berechne_summe_quadrate ruft berechne_quadrat(4) auf → gibt 16 zurück
    • berechne_summe_quadrate berechnet 9 + 16 = 25 und gibt 25 zurück
    • Hauptprogramm gibt 25 aus
  3. Variablen-Tabelle:

VariableWert
a3
b4
quadrat_a9
quadrat_b16
summe25

Detaillierte Erklärung des Call Stacks:

python
# Schritt 1: Hauptprogramm
resultat = berechne_summe_quadrate(3, 4)

# Schritt 2: berechne_summe_quadrate wird aufgerufen
# a = 3, b = 4
quadrat_a = berechne_quadrat(3)  # Ruft berechne_quadrat auf

# Schritt 3: berechne_quadrat(3) wird ausgeführt
# zahl = 3
# ergebnis = 3 * 3 = 9
# return 9

# Schritt 4: Zurück in berechne_summe_quadrate
# quadrat_a = 9
quadrat_b = berechne_quadrat(4)  # Ruft berechne_quadrat auf

# Schritt 5: berechne_quadrat(4) wird ausgeführt
# zahl = 4
# ergebnis = 4 * 4 = 16
# return 16

# Schritt 6: Zurück in berechne_summe_quadrate
# quadrat_b = 16
summe = 9 + 16  # = 25
# return 25

# Schritt 7: Zurück im Hauptprogramm
# resultat = 25
print(25)  # Ausgabe: 25

Lösung 9.5: Debugging

Fehler: Die Formel in berechne_flaeche verwendet + (Addition) statt * (Multiplikation). Die Fläche eines Rechtecks ist Länge × Breite, nicht Länge + Breite.

Problem:

python
flaeche = laenge + breite  # Falsch: Addition statt Multiplikation

Korrekte Lösung:

python
def berechne_flaeche(laenge, breite):
    """Berechnet die Fläche eines Rechtecks."""
    flaeche = laenge * breite  # Korrekt: Multiplikation
    return flaeche

def flaeche_mit_rahmen(laenge, breite):
    """Berechnet Fläche und gibt sie formatiert aus."""
    ergebnis = berechne_flaeche(laenge, breite)
    return f"Die Fläche ist {ergebnis} m²"

# Test
print(flaeche_mit_rahmen(5, 3))  # Ausgabe: "Die Fläche ist 15 m²"

Mit Debugger finden:

  1. Setze einen Breakpoint in berechne_flaeche
  2. Führe flaeche_mit_rahmen(5, 3) aus
  3. Beobachte die Variable flaeche:
    • Mit +: flaeche = 5 + 3 = 8 (falsch)
    • Mit *: flaeche = 5 * 3 = 15 (korrekt)
  4. Überprüfe die mathematische Formel: Fläche = Länge × Breite

Erklärung:

  • Rechteckfläche: A = Länge × Breite
  • Rechteckumfang: U = 2 × (Länge + Breite)
  • Der Code berechnete versehentlich die Hälfte des Umfangs

Informatik & ICT Unterricht Neufeld