Python If...Else
Lerne, wie Python if, elif und else funktionieren – mit Syntax, Vergleichsoperatoren, logischen Operatoren, verschachtelten Bedingungen und dem ternären Ausdruck.
Bedingte Anweisungen ermöglichen es einem Python-Programm, je nachdem ob eine Bedingung wahr oder falsch ist, zwischen verschiedenen Ausführungspfaden zu wählen. Dieses Kapitel behandelt alle Formen von Python-Bedingungen: if, if-else, if-elif-else, verschachteltes if und die einzeilige Kurzform — zusammen mit den Vergleichs- und logischen Operatoren, die Bedingungen ermöglichen.
Die if-Anweisung
Die if-Anweisung ist die einfachste Bedingung. Der eingerückte Block wird nur ausgeführt, wenn die Bedingung zu True ausgewertet wird.
if condition:
# code that runs when condition is TrueBeispiel
Python verwendet Einrückung (per Konvention 4 Leerzeichen) zur Definition des Blocks — es gibt keine geschweiften Klammern. Wenn die Bedingung False ist, wird der Block einfach übersprungen.
Vergleichsoperatoren
Bedingungen werden aus Ausdrücken aufgebaut, die zwei Werte vergleichen. Jeder Ausdruck ergibt einen Python boolean — True oder False.
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
== | Gleich | 5 == 5 | True |
!= | Ungleich | 5 != 3 | True |
> | Größer als | 5 > 3 | True |
< | Kleiner als | 5 < 3 | False |
>= | Größer als oder gleich | 5 >= 5 | True |
<= | Kleiner als oder gleich | 4 <= 5 | True |
Siehe Python Operators für die vollständige Operatorreferenz einschließlich arithmetischer und Zuweisungsoperatoren.
Logische Operatoren
Logische Operatoren kombinieren mehrere Bedingungen zu einem einzigen Ausdruck.
| Operator | Gibt True zurück, wenn… | Beispiel |
|---|---|---|
and | Beide Bedingungen sind True | x > 0 and x < 10 |
or | Mindestens eine Bedingung ist True | x < 0 or x > 100 |
not | Die Bedingung ist False | not logged_in |
Beispiel — and
Beispiel — or und not
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print("It is the weekend")
logged_in = False
if not logged_in:
print("Please log in")Die if-else-Anweisung
Füge eine else-Klausel hinzu, um den Fall zu behandeln, wenn die Bedingung False ist.
if condition:
# runs when condition is True
else:
# runs when condition is FalseBeispiel
Nur einer der beiden Blöcke wird bei einem gegebenen Durchlauf ausgeführt.
Die if-elif-else-Anweisung
Verwende elif (kurz für „else if"), um mehrere Bedingungen der Reihe nach zu testen. Python prüft sie von oben nach unten und führt den ersten passenden Block aus. Der else-Block am Ende ist ein Auffangbehälter für den Fall, dass keine der Bedingungen zutrifft.
if condition1:
# runs when condition1 is True
elif condition2:
# runs when condition2 is True and condition1 is False
elif condition3:
# runs when condition3 is True and the above are False
else:
# runs when none of the above are TrueDu kannst so viele elif-Klauseln verwenden wie nötig, aber nur ein if und höchstens ein else.
Beispiel — Notenklassifizierung
Warum die Reihenfolge wichtig ist: Sobald Python eine True-Bedingung findet, hört es auf zu prüfen. Wenn du score >= 60 zuerst schreiben würdest, würde ein Score von 95 "Grade: C" ausgeben, weil 95 auch >= 60 ist. Setze immer die spezifischste (strengste) Bedingung zuerst.
Verschachtelte if-Anweisungen
Eine if-Anweisung kann im Block einer anderen if-Anweisung erscheinen. Dies wird als Verschachtelung bezeichnet und ist nützlich, wenn du einen sekundären Test nur dann anwenden möchtest, wenn ein primärer Test bestanden wird.
score = 85
if score >= 60:
if score >= 90:
print("Grade: A")
elif score >= 80:
print("Grade: B")
else:
print("Grade: C")
else:
print("Grade: F")
# Output: Grade: BAchtung: Tiefe Verschachtelung macht Code schwer lesbar. Bevorzuge elif-Ketten für flache Vergleiche, und erwäge, verschachtelte Logik in eine Funktion auszulagern, wenn die Verschachtelung zwei Ebenen übersteigt.
Wahrheitswerte und falsy-Werte
Python behandelt viele Werte implizit als True oder False, ohne einen Vergleichsoperator zu verwenden. Werte, die in einem boolean-Kontext als False gelten, sind:
NoneFalse0(ganzzahlige Null),0.0(Fließkomma-Null)""(leerer string),[](leeres array),{}(leeres dict),()(leeres Tupel),set()(leere Menge)
Alles andere gilt als True. Das ermöglicht prägnante Schutzausdrücke:
name = "Alice"
if name:
print("Name is set") # prints because "Alice" is truthy
items = []
if not items:
print("The list is empty") # prints because [] is falsy
value = None
if value is None:
print("No value provided") # use 'is None' for explicit None checksVerwende is None / is not None (nicht == None), wenn du speziell auf None testest — das ist die Python-Stilkonvention und vermeidet unbeabsichtigte Übereinstimmungen.
Kurzform if (ternärer Ausdruck)
Pythons einzeiliger bedingter Ausdruck weist basierend auf einer Bedingung einen von zwei Werten zu:
value = result_if_true if condition else result_if_falseBeispiel
age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adultDies entspricht:
if age >= 18:
status = "adult"
else:
status = "minor"Verwende die ternäre Form für einfache Wertzuweisungen. Vermeide Verschachtelung — a if c1 else b if c2 else c wird schnell unleserlich.
Die pass-Anweisung
Python erfordert mindestens eine Anweisung in jedem Block. Wenn du einen if-Zweig definieren möchtest, der absichtlich nichts tut (ein Platzhalter während der Entwicklung), verwende pass:
x = 10
if x > 5:
pass # TODO: handle this case later
else:
print("x is 5 or less")pass ist eine No-Op-Anweisung — sie teilt Python mit: „Dieser Block ist absichtlich leer."
Der Walrus-Operator := (Python 3.8+)
Der Walrus-Operator weist einer Variablen einen Wert zu und testet ihn im selben Ausdruck. Er ist am nützlichsten, wenn du den getesteten Wert im if-Block benötigst:
numbers = [1, 2, 3, 4, 5]
if (n := len(numbers)) > 3:
print(f"List has {n} items, which is more than 3")
# Output: List has 5 items, which is more than 3Ohne := würdest du eine separate Zuweisungszeile benötigen. Die Klammern um n := len(numbers) sind hier erforderlich, um Mehrdeutigkeit zu vermeiden.
Häufige Stolperfallen
Verwendung von = statt ==
# Wrong — this is assignment, not comparison, and causes a SyntaxError in conditions
# if x = 5:
# Correct
if x == 5:
print("x is five")Den Doppelpunkt vergessen
Jede if-, elif- und else-Zeile muss mit : enden. Ein fehlender Doppelpunkt verursacht einen SyntaxError.
Inkonsistente Einrückung
Alle Anweisungen im selben Block müssen genau die gleiche Einrückung verwenden. Das Mischen von Tabs und Leerzeichen verursacht einen IndentationError. Halte dich an 4 Leerzeichen, was dem PEP 8-Standard entspricht.
Wann was verwenden
| Szenario | Beste Wahl |
|---|---|
| Eine Bedingung, einzelne Aktion | if |
| Zwei sich gegenseitig ausschließende Pfade | if-else |
| Drei oder mehr Pfade | if-elif-else |
| Sekundärer Test innerhalb eines Zweigs | Verschachteltes if |
| Einfache Wertzuweisung | Ternäres x if c else y |
| Gleichheitsprüfungen mit mehreren Werten (Python 3.10+) | match-Anweisung |
Übungen
Wenn du Bedingungen verstehst, ist der nächste logische Schritt die Wiederholung von Code mit Python while-Schleifen und Python for-Schleifen.