Lernziele dieses Kapitels
- Du baust if-elif-else Strukturen für Entscheidungsbäume
- Du verstehst verschachtelte Bedingungen und wann sie sinnvoll sind
- Du nutzt Truthy und Falsy in Python für elegante Prüfungen
- Du erweiterst PyBuddy um einen Stimmungs-Check
if, elif, else
Bedingungen steuern den Programmfluss. In Python ist die Einrückung (4 Leerzeichen) Pflicht — sie ersetzt die geschweiften Klammern aus JavaScript.
Der Ablauf ist immer: if prüft die erste Bedingung, elif (else if) prüft Alternativen, else fängt alle restlichen Fälle ab.
Achtung
Vergiss den Doppelpunkt : am Ende jeder Bedingung! Sonst gibt Python einen SyntaxError.
# Noten-Rechner mit if-elif-else
prozent = float(input("Prozentzahl: "))
if prozent >= 89:
note = 1
elif prozent >= 76:
note = 2
elif prozent >= 63:
note = 3
elif prozent >= 50:
note = 4
else:
note = 5
print(f"Deine Note: {note}")
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
if prozent >= 89:
note = 1
elif prozent >= 76:
note = 2
else:
note = 3
if (prozent >= 89) {
note = 1;
} else if (prozent >= 76) {
note = 2;
} else {
note = 3;
}
: statt geschweifter Klammern. elif in Python ist else if in JavaScript. Die Logik ist identisch!Verschachtelte Bedingungen
Bedingungen in Bedingungen ermöglichen komplexe Logik. Stell dir vor, du prüfst erst ob ein Spieler online ist, und dann ob er genug Mana für einen Zauber hat.
Aber Vorsicht: Ab 3 Verschachtelungsebenen wird Code schnell unleserlich. Dann sind Funktionen (Kapitel 8) die bessere Wahl.
# Verschachtelte Bedingungen: Login-System
name = input("Benutzername: ")
passwort = input("Passwort: ")
if name == "admin":
if passwort == "geheim123":
print(" Login erfolgreich!")
else:
print(" Falsches Passwort.")
else:
print(" Benutzer nicht gefunden.")
# Kompakter mit and:
if name == "admin" and passwort == "geheim123":
print(" Login erfolgreich!")
else:
print(" Zugriff verweigert.")
Truthy & Falsy
In Python werden bestimmte Werte automatisch als False betrachtet — das nennt man Falsy. Alle anderen Werte sind Truthy (also True).
- Falsy:
0,0.0,""(leerer String),[](leere Liste),None,{} - Truthy: Alles andere, z.B.
"Hallo",42,[1, 2]
Das ermöglicht sehr elegante Prüfungen.
# Truthy & Falsy in Python
name = input("Dein Name: ")
# Elegant statt name != "":
if name:
print(f"Hallo {name}!")
else:
print("Du hast nichts eingegeben.")
# Auch bei Listen
aufgaben = []
if not aufgaben:
print("Keine Aufgaben vorhanden.")
aufgaben = ["Python lernen"]
if aufgaben:
print(f"Du hast {len(aufgaben)} Aufgabe(n).")
Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:
if name:
print("Hallo!")
if not aufgaben:
print("Leer")
if (name) {
console.log("Hallo!");
}
if (!aufgaben.length) {
console.log("Leer");
}
if name: oder if not aufgaben:. In JavaScript brauchst du .length für Arrays und leere Strings sind auch falsy — aber leere Arrays sind truthy!match-case für Pattern Matching
Ab Python 3.10 gibt es match-case — ein eleganter Ersatz für lange if-elif-Ketten wenn du einen Wert gegen mehrere Muster prüfst. Es ist vergleichbar mit switch-case in anderen Sprachen, aber viel mächtiger.
# match-case statt if-elif
befehl = input("Befehl: ").lower()
match befehl:
case "hallo":
print(" Hallo!")
case "hilfe":
print(" Verfügbare Befehle: hallo, status, exit")
case "status":
print(" PyBuddy ist online.")
case "exit":
print(" Tschüss!")
case _:
print(" Unbekannter Befehl.")
Bedingungen in Aktion: Quest-Status
Stell dir ein RPG vor, in dem der Spieler eine Quest abschließen muss. Du musst prüfen: Hat er das Item? Ist sein Level hoch genug? Hat er genug Zeit?
# Quest-Prüfung in einem RPG
level = 12
item = "Drachenschuppe"
zeit = 45 # Minuten
if level >= 10 and item == "Drachenschuppe" and zeit <= 60:
print(" Quest abgeschlossen!")
print(" Belohnung: 500 XP + Legendäres Schwert")
elif level < 10:
print("⛔ Dein Level ist zu niedrig. Benötigt: Level 10")
elif item != "Drachenschuppe":
print("⛔ Du fehlt das benötigte Item.")
else:
print(" Zeit abgelaufen!")
Warm-Up: Noten-Rechner
Schreibe ein Programm, das eine Prozentzahl einliest und die Schulnote (1-5) ausgibt. Nutze if-elif-else.
Hinweis: p = float(input("Prozent: "))
if p >= 89: n = 1
elif p >= 76: n = 2
elif p >= 63: n = 3
elif p >= 50: n = 4
else: n = 5
print(f"Note: {n}")
p = float(input("Prozent: "))
if p >= 89: n = 1
elif p >= 76: n = 2
elif p >= 63: n = 3
elif p >= 50: n = 4
else: n = 5
print(f"Note: {n}")
Challenge: Passwort-Stärke-Checker
Prüfe ein Passwort auf Stärke: mindestens 8 Zeichen, enthält Zahl, enthält Großbuchstabe. Nutze verschachtelte Bedingungen und len().
Hinweis: pw = input("Passwort: ")
has_digit = any(c.isdigit() for c in pw)
has_upper = any(c.isupper() for c in pw)
if len(pw) < 8:
print(" Zu kurz")
elif not has_digit:
print(" Keine Zahl")
elif not has_upper:
print(" Kein Großbuchstabe")
else:
print(" Stark!")
pw = input("Passwort: ")
has_digit = any(c.isdigit() for c in pw)
has_upper = any(c.isupper() for c in pw)
if len(pw) < 8:
print(" Zu kurz")
elif not has_digit:
print(" Keine Zahl")
elif not has_upper:
print(" Kein Großbuchstabe")
else:
print(" Stark!")
PyBuddy-Checkpoint: Stimmungs-Check
PyBuddy fragt nach der Stimmung (1-5) und gibt passende Antworten aus. Nutze if-elif-else und f-Strings.
Hinweis: # pybuddy/main.py
stimmung = int(input(" Wie ist deine Stimmung (1-5)? "))
if stimmung >= 4:
print(" Super! Lass uns produktiv sein!")
elif stimmung == 3:
print(" Gut! Ein guter Tag zum Lernen.")
elif stimmung >= 1:
print(" Kein Problem. Jeder Tag ist anders.")
else:
print(" Bitte gib eine Zahl zwischen 1 und 5 ein.")
# pybuddy/main.py
stimmung = int(input(" Wie ist deine Stimmung (1-5)? "))
if stimmung >= 4:
print(" Super! Lass uns produktiv sein!")
elif stimmung == 3:
print(" Gut! Ein guter Tag zum Lernen.")
elif stimmung >= 1:
print(" Kein Problem. Jeder Tag ist anders.")
else:
print(" Bitte gib eine Zahl zwischen 1 und 5 ein.")
In Undertale ändert sich das komplette Spielverhalten basierend auf if-else-Entscheidungen: Tötest du Gegner oder verschonst du sie? Das Spiel speichert deine Entscheidung in einer Variable und prüft sie mit Bedingungen — genau wie du es jetzt kannst!
Zusammenfassung
- if → elif → else für Entscheidungsbäume
- Verschachtelung möglich, aber max. 2-3 Ebenen
- Truthy/Falsy: leer, 0, None = automatisch False
- match-case (Python 3.10+) für Pattern Matching
- Bedingungen steuern den kompletten Programmfluss