Lösungen: Teil 7 - Bedingungen
Lösung 7.1: Einfache if-Bedingung
def ist_positiv(zahl):
"""Prüft, ob eine Zahl positiv ist."""
if zahl > 0:
return True
else:
return FalseVariante 2 (kürzer):
def ist_positiv(zahl):
"""Prüft, ob eine Zahl positiv ist."""
return zahl > 0Erklärung: > prüft, ob links größer als rechts ist. Der Vergleich zahl > 0 gibt direkt True oder False zurück.
Lösung 7.2: if-elif-else
def zahl_klassifizieren(zahl):
"""Klassifiziert eine Zahl."""
if zahl > 0:
return "positiv"
elif zahl < 0:
return "negativ"
else:
return "null"Erklärung:
ifprüft die erste Bedingungelif(else if) ist eine weitere Bedingungelseist der Fallback, wenn keine Bedingung zutrifft
Lösung 7.3: Vergleich zweier Zahlen
def groessere_zahl(a, b):
"""Gibt die größere Zahl zurück."""
if a >= b:
return a
else:
return bVariante 2 (mit max):
def groessere_zahl(a, b):
"""Gibt die größere Zahl zurück."""
return max(a, b)Erklärung: >= bedeutet "größer oder gleich". Bei gleichen Zahlen wird die erste zurückgegeben.
Lösung 7.4: Code Reading
Antworten:
Was wird ausgegeben, wenn
temperatur = 25?Es ist warm.Was wird ausgegeben, wenn
temperatur = 35?Es ist heiß!Was wird ausgegeben, wenn
temperatur = 5?Es ist kalt!Welche Bedingung wird bei
temperatur = 25überprüft und welche Bedingungen werden übersprungen?temperatur > 30wird geprüft → False (25 ist nicht > 30)temperatur > 20wird geprüft → True (25 ist > 20) →nachricht = "Es ist warm."- Die restlichen Bedingungen (
temperatur > 10undelse) werden übersprungen, weil bereits eine Bedingung zutraf
Ablauf-Tabelle für verschiedene Temperaturen:
| temperatur | Bedingung getroffen | nachricht | Ausgabe |
|---|---|---|---|
| 35 | temperatur > 30 | "Es ist heiß!" | Es ist heiß! |
| 25 | temperatur > 20 | "Es ist warm." | Es ist warm. |
| 15 | temperatur > 10 | "Es ist kühl." | Es ist kühl. |
| 5 | else | "Es ist kalt!" | Es ist kalt! |
Lösung 7.5: Debugging
Fehler: Der Code verwendet > (größer als) statt >= (größer oder gleich). Eine Person mit Alter 18 sollte als volljährig gelten, aber 18 > 18 ist False.
Problem:
if alter > 18: # 18 > 18 ist False!
return "volljährig"Korrekte Lösung:
def pruefe_volljaehrigkeit(alter):
"""Prüft, ob eine Person volljährig ist."""
if alter >= 18: # >= bedeutet "größer oder gleich"
return "volljährig"
else:
return "minderjährig"Erklärung:
>bedeutet "größer als" (18 zählt NICHT)>=bedeutet "größer oder gleich" (18 zählt MIT)
Bonus-Übungen
Lösung Bonus 1: Gerade oder ungerade
def ist_gerade(zahl):
"""Prüft, ob eine Zahl gerade ist."""
if zahl % 2 == 0:
return True
else:
return FalseVariante 2 (kürzer):
def ist_gerade(zahl):
"""Prüft, ob eine Zahl gerade ist."""
return zahl % 2 == 0Erklärung:
- Der Modulo-Operator
%gibt den Rest einer Division zurück - Gerade Zahlen haben Rest 0 bei Division durch 2
- Beispiele:
4 % 2 = 0(gerade),7 % 2 = 1(ungerade)
Lösung Bonus 2: Maximum von drei Zahlen
def maximum_von_drei(a, b, c):
"""Findet das Maximum von drei Zahlen."""
if a >= b and a >= c:
return a
elif b >= a and b >= c:
return b
else:
return cVariante 2 (mit max):
def maximum_von_drei(a, b, c):
"""Findet das Maximum von drei Zahlen."""
return max(a, b, c)Variante 3 (schrittweise):
def maximum_von_drei(a, b, c):
"""Findet das Maximum von drei Zahlen."""
# Erst Maximum von a und b finden
if a >= b:
groesser = a
else:
groesser = b
# Dann mit c vergleichen
if c >= groesser:
return c
else:
return groesserErklärung: Wir vergleichen alle drei Zahlen und geben die größte zurück. Die max() Funktion macht das automatisch.