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) / 2Erklärung: Die Funktion nimmt zwei Parameter a und b entgegen und gibt deren Durchschnitt zurück.
Beispiele:
durchschnitt_zwei(4, 6)→ 5.0durchschnitt_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 + 10Alternative (kürzer):
python
def verdopple_und_addiere_zehn(zahl):
"""Verdoppelt eine Zahl und addiert 10."""
return verdopple(zahl) + 10Erklärung:
- Die Funktion
verdopple_und_addiere_zehnruft die Funktionverdoppleauf - 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:
Was wird ausgegeben?
25Ablauf - Welche Funktion ruft welche auf?
- Hauptprogramm ruft
berechne_summe_quadrate(3, 4)auf berechne_summe_quadrateruftberechne_quadrat(3)auf → gibt 9 zurückberechne_summe_quadrateruftberechne_quadrat(4)auf → gibt 16 zurückberechne_summe_quadrateberechnet 9 + 16 = 25 und gibt 25 zurück- Hauptprogramm gibt 25 aus
- Hauptprogramm ruft
Variablen-Tabelle:
| Variable | Wert |
|---|---|
| a | 3 |
| b | 4 |
| quadrat_a | 9 |
| quadrat_b | 16 |
| summe | 25 |
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: 25Lö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 MultiplikationKorrekte 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:
- Setze einen Breakpoint in
berechne_flaeche - Führe
flaeche_mit_rahmen(5, 3)aus - Beobachte die Variable
flaeche:- Mit
+: flaeche = 5 + 3 = 8 (falsch) - Mit
*: flaeche = 5 * 3 = 15 (korrekt)
- Mit
- Ü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