DE EN

Bedingungen

if, elif, else — wie dein Programm Entscheidungen trifft und den Codefluss steuert.

50 Min Mittel

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.

Python
# 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}")
Ausgabe
Prozentzahl: 82 Deine Note: 2
Python vs. JavaScript — Das kennst du schon!

Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:

Python
if prozent >= 89:
    note = 1
elif prozent >= 76:
    note = 2
else:
    note = 3
JavaScript
if (prozent >= 89) {
    note = 1;
} else if (prozent >= 76) {
    note = 2;
} else {
    note = 3;
}
Merke: Python nutzt Einrückung und : 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.

Python
# 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.")
Ausgabe
Benutzername: admin Passwort: geheim123 Login erfolgreich!

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.

Python
# 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).")
Ausgabe
Dein Name: Max Hallo Max! Keine Aufgaben vorhanden. Du hast 1 Aufgabe(n).
Python vs. JavaScript — Das kennst du schon!

Du kennst bereits JavaScript aus dem JS-Quest. Hier ist der direkte Vergleich:

Python
if name:
    print("Hallo!")
if not aufgaben:
    print("Leer")
JavaScript
if (name) {
    console.log("Hallo!");
}
if (!aufgaben.length) {
    console.log("Leer");
}
Merke: In Python prüfst du direkt 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.

Python
# 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.")
Ausgabe
Befehl: status PyBuddy ist online.

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?

Python
# 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!")
Ausgabe
Quest abgeschlossen! Belohnung: 500 XP + Legendäres Schwert

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}")

Lösung
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!")

Lösung
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.")

Lösung
# 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.")
Didaktische Pause

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