Python & AI Tutorials Logo
Python Programmierung

10. Bedingte Ausdrücke verwenden (if-else-Ausdrücke)

In Kapitel 8 haben wir gelernt, wie wir in unseren Programmen Entscheidungen mit if-Anweisungen treffen. Diese Anweisungen erlauben es uns, abhängig von Bedingungen unterschiedliche Codeblöcke auszuführen. Manchmal müssen wir jedoch zwischen zwei Werten statt zwischen zwei Codeblöcken wählen. Python bietet für diese häufige Situation eine spezielle Syntax: bedingte Ausdrücke.

Bedingte Ausdrücke (in anderen Sprachen auch ternäre Ausdrücke oder der ternäre Operator genannt) erlauben es uns, kompakten Entscheidungscode zu schreiben, wenn wir einfach abhängig von einer Bedingung einen Wert oder einen anderen auswählen müssen. Sie sind besonders nützlich für Zuweisungen und beim Aufbau größerer Ausdrücke.

10.1) Was bedingte Ausdrücke sind

Ein bedingter Ausdruck ist ein einzelner Ausdruck, der abhängig von einer Bedingung zu einem von zwei Werten ausgewertet wird. Anders als eine if-Anweisung, die steuert, welcher Codeblock ausgeführt wird, liefert ein bedingter Ausdruck einen Wert, der sofort verwendet werden kann.

Schauen wir uns ein häufiges Szenario an. Angenommen, wir schreiben ein Programm, um Schülerinnen und Schüler nach Alter zu kategorisieren:

python
# Verwendung einer if-Anweisung (das, was wir bereits kennen)
age = 16
if age >= 18:
    category = "adult"
else:
    category = "minor"
print(f"Category: {category}")  # Output: Category: minor

Das funktioniert perfekt, aber beachten Sie, dass wir eigentlich nur zwischen zwei String-Werten wählen. Die Struktur ist für eine so einfache Entscheidung etwas ausführlich. Hier ist dieselbe Logik mit einem bedingten Ausdruck:

python
# Verwendung eines bedingten Ausdrucks
age = 16
category = "adult" if age >= 18 else "minor"
print(f"Category: {category}")  # Output: Category: minor

Beide Versionen liefern identische Ergebnisse, aber der bedingte Ausdruck ist kompakter. Er weist category direkt abhängig von der Bedingung einen von zwei Werten zu.

Den grundlegenden Unterschied verstehen

Der entscheidende Unterschied ist, dass bedingte Ausdrücke Ausdrücke sind und keine Anweisungen:

  • Ein Ausdruck ist etwas, das zu einem Wert ausgewertet wird. Sie können ihn überall dort verwenden, wo ein Wert erwartet wird: bei Zuweisungen, als Funktionsargumente, innerhalb anderer Ausdrücke usw.
  • Eine Anweisung ist eine vollständige Instruktion, die eine Aktion ausführt, aber keinen Wert liefert.
python
# Das ist ein Ausdruck – er liefert einen Wert
result = 10 if True else 20
 
# Das ist eine Anweisung – sie führt Aktionen aus, ist aber selbst kein Wert
if True:
    result = 10
else:
    result = 20

Weil bedingte Ausdrücke Werte liefern, sind sie in bestimmten Situationen flexibler. Das bedeutet jedoch nicht, dass sie immer besser sind—wir werden später in diesem Kapitel untersuchen, wann Sie welchen Ansatz verwenden sollten.

10.2) Syntax des if–else-Ausdrucks

Die Syntax eines bedingten Ausdrucks folgt diesem Muster:

value_if_true if condition else value_if_false

Schlüsseln wir jede Komponente auf:

  1. value_if_true: Der Ausdruck, der ausgewertet und zurückgegeben wird, wenn die Bedingung True ist
  2. if: Das Schlüsselwort, das die Bedingung einleitet
  3. condition: Ein boolescher Ausdruck, der bestimmt, welcher Wert zurückgegeben wird
  4. else: Das Schlüsselwort, das den alternativen Wert einleitet
  5. value_if_false: Der Ausdruck, der ausgewertet und zurückgegeben wird, wenn die Bedingung False ist

Beachten Sie, dass die Reihenfolge ungewöhnlich wirken kann, wenn Sie mit anderen Programmiersprachen vertraut sind. In Python kommt der „True“-Wert zuerst, dann die Bedingung, dann der „False“-Wert. Diese Reihenfolge liest sich ein wenig wie natürliches Englisch: „Gib mir X, wenn die Bedingung wahr ist, sonst gib mir Y.“

Ja

Nein

Start: Bedingung auswerten

Bedingung True?

Auswerten und zurückgeben
value_if_true

Auswerten und zurückgeben
value_if_false

Ergebnis verfügbar

Schauen wir uns mehrere Beispiele mit unterschiedlichen Werttypen an:

python
# Beispiel 1: Zwischen Zahlen wählen
temperature = 25
comfort_level = "warm" if temperature > 20 else "cool"
print(comfort_level)  # Output: warm
 
# Beispiel 2: Zwischen Berechnungen wählen
score = 85
bonus = 10 if score >= 90 else 5
print(f"Bonus points: {bonus}")  # Output: Bonus points: 5
 
# Beispiel 3: Zwischen booleschen Werten wählen
has_permission = True
access = "granted" if has_permission else "denied"
print(f"Access: {access}")  # Output: Access: granted
 
# Beispiel 4: Die Bedingung kann ein beliebiger boolescher Ausdruck sein
username = "admin"
role = "administrator" if username == "admin" else "regular user"
print(f"Role: {role}")  # Output: Role: administrator

Wichtige Hinweise zur Syntax

Der else-Teil ist in einem bedingten Ausdruck zwingend erforderlich. Anders als bei einer if-Anweisung, bei der else optional ist, müssen Sie beide Alternativen angeben:

python
# Das ist UNGÜLTIG – else fehlt
# result = "yes" if True  # SyntaxError
 
# Das ist GÜLTIG – beide Zweige sind angegeben
result = "yes" if True else "no"

Diese Anforderung ist sinnvoll, weil ein Ausdruck immer einen Wert liefern muss. Wenn die Bedingung False ist und es keine else-Klausel gibt, welchen Wert soll der Ausdruck dann liefern? Python verlangt, dass Sie beide Möglichkeiten explizit angeben.

10.3) Wie bedingte Ausdrücke ausgewertet werden

Wenn Sie verstehen, wie Python bedingte Ausdrücke auswertet, können Sie korrekten Code schreiben und vorhersagen, was Ihre Programme tun werden. Die Auswertung folgt einer bestimmten, vorhersagbaren Abfolge.

Der Auswertungsprozess

Python wertet einen bedingten Ausdruck in dieser Reihenfolge aus:

  1. Bedingung auswerten (der boolesche Ausdruck nach if)
  2. Abhängig vom Ergebnis:
    • Wenn die Bedingung True ist, value_if_true auswerten und zurückgeben
    • Wenn die Bedingung False ist, value_if_false auswerten und zurückgeben

Entscheidend ist, dass Python nur einen der beiden Wertausdrücke auswertet, nicht beide. Das nennt man Kurzschlussauswertung (short-circuit evaluation) und es ist ähnlich dazu, wie die Operatoren and und or funktionieren (die wir in Kapitel 9 kennengelernt haben).

python
# Nur der relevante Zweig wird ausgewertet
x = 10
result = x * 2 if x > 5 else x / 2
# Da x > 5 True ist, wertet Python x * 2 aus (ergibt 20)
# und wertet x / 2 nie aus
print(result)  # Output: 20

Warum Kurzschlussauswertung wichtig ist

Kurzschlussauswertung kann Fehler verhindern und die Effizienz verbessern:

python
# Beispiel 1: Division durch null vermeiden
denominator = 0
result = "undefined" if denominator == 0 else 100 / denominator
print(result)  # Output: undefined
# Die Division 100 / denominator wird nie versucht, weil
# die Bedingung True ist, daher vermeiden wir einen ZeroDivisionError
python
# Beispiel 2: Operationen auf None vermeiden
data = None
length = 0 if data is None else len(data)
print(length)  # Output: 0
# len(data) wird nie aufgerufen, weil data None ist,
# wodurch ein TypeError vermieden wird

Truthiness in bedingten Ausdrücken

Wie bei if-Anweisungen (Kapitel 8) verwendet die Bedingung in einem bedingten Ausdruck Pythons Truthiness-Regeln. Jeder Wert kann als Bedingung verwendet werden:

python
# Leerer String ist falsy
name = ""
greeting = f"Hello, {name}" if name else "Hello, guest"
print(greeting)  # Output: Hello, guest
 
# Nicht-leerer String ist truthy
name = "Alice"
greeting = f"Hello, {name}" if name else "Hello, guest"
print(greeting)  # Output: Hello, Alice
 
# Null ist falsy, Nicht-Null ist truthy
items = 0
message = "You have items" if items else "Your cart is empty"
print(message)  # Output: Your cart is empty
 
items = 3
message = "You have items" if items else "Your cart is empty"
print(message)  # Output: You have items

Verschachtelte Auswertung

Die Werte in einem bedingten Ausdruck können selbst Ausdrücke sein, einschließlich anderer bedingter Ausdrücke. Python wertet diese von innen nach außen aus:

python
# Der value_if_true ist selbst eine Berechnung
age = 25
price = age * 2 if age < 18 else age * 3
print(price)  # Output: 75
# Schritte: age < 18 → False → age * 3 auswerten → 75
 
# Die Bedingung ist ein komplexer Ausdruck
score = 85
grade = 90
status = "excellent" if score >= 80 and grade >= 85 else "good"
print(status)  # Output: excellent
# Schritte: score >= 80 → True, grade >= 85 → True
#        True and True → True → "excellent" zurückgeben

10.4) Bedingte Ausdrücke in Zuweisungen verwenden

Eine der häufigsten Verwendungen bedingter Ausdrücke ist bei Zuweisungen, bei denen wir eine Variable abhängig von einer Bedingung auf einen von zwei Werten setzen wollen. Dieses Muster kommt in realem Code häufig vor.

Einfache Zuweisungsmuster

Schauen wir uns praktische Beispiele an, in denen bedingte Ausdrücke Zuweisungen sauberer machen:

python
# Beispiel 1: Einen Rabatt basierend auf der Mitgliedschaft setzen
is_member = True
discount = 0.15 if is_member else 0.05
print(f"Discount: {discount * 100}%")  # Output: Discount: 15.0%
 
# Beispiel 2: Versandkosten bestimmen
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
print(f"Shipping: ${shipping:.2f}")  # Output: Shipping: $5.99
 
# Beispiel 3: Einen Standardwert setzen
user_input = ""  # Leere Eingabe simulieren
page_size = int(user_input) if user_input else 10
print(f"Items per page: {page_size}")  # Output: Items per page: 10

Vergleich mit if-Anweisungen

Schauen wir uns dieselben Zuweisungen mit if-Anweisungen an, um den Unterschied zu sehen:

python
# Verwendung einer if-Anweisung (ausführlicher)
is_member = True
if is_member:
    discount = 0.15
else:
    discount = 0.05
 
# Verwendung eines bedingten Ausdrucks (kompakter)
is_member = True
discount = 0.15 if is_member else 0.05

Beide Ansätze funktionieren korrekt, aber der bedingte Ausdruck ist knapper, wenn Sie einfach zwischen zwei Werten wählen. Die if-Anweisungsversion braucht vier Zeilen und wiederholt den Variablennamen discount zweimal, während der bedingte Ausdruck dasselbe in einer Zeile erledigt.

Mehrere Zuweisungen mit konsistenter Logik

Wenn Sie mehrere Zuweisungen auf Basis derselben Bedingung machen müssen, haben Sie Optionen:

python
# Ansatz 1: Mehrere bedingte Ausdrücke
is_premium = True
price = 99.99 if is_premium else 149.99
features = "all" if is_premium else "basic"
support = "priority" if is_premium else "standard"
 
# Ansatz 2: Eine if-Anweisung für mehrere Zuweisungen
is_premium = True
if is_premium:
    price = 99.99
    features = "all"
    support = "priority"
else:
    price = 149.99
    features = "basic"
    support = "standard"

In diesem Fall ist der if-Ansatz (Ansatz 2) oft besser lesbar, weil er zusammengehörige Zuweisungen gruppiert und die Beziehung zwischen ihnen klar macht. Der Ansatz mit bedingten Ausdrücken (Ansatz 1) funktioniert, wiederholt aber dreimal die Bedingung, was schwerer zu warten sein kann, wenn sich die Bedingung ändern muss.

10.5) Bedingte Ausdrücke innerhalb größerer Ausdrücke verwenden

Weil bedingte Ausdrücke Werte liefern, können sie in größere Ausdrücke eingebettet werden. Das ermöglicht leistungsfähigen, kompakten Code, erfordert aber Sorgfalt, um die Lesbarkeit zu erhalten.

Bedingte Ausdrücke in Arithmetik

Sie können bedingte Ausdrücke als Operanden in arithmetischen Operationen verwenden:

python
# Bedingte Addition
base_score = 80
bonus_eligible = True
final_score = base_score + (10 if bonus_eligible else 0)
print(f"Final score: {final_score}")  # Output: Final score: 90

Bedingte Ausdrücke in String-Formatierung

Bedingte Ausdrücke funktionieren nahtlos mit f-Strings und anderen String-Operationen:

python
# Beispiel 1: Pluralbildung in Meldungen
item_count = 1
message = f"You have {item_count} {'item' if item_count == 1 else 'items'}"
print(message)  # Output: You have 1 item
 
item_count = 3
message = f"You have {item_count} {'item' if item_count == 1 else 'items'}"
print(message)  # Output: You have 3 items
 
# Beispiel 2: Bedingte Begrüßung basierend auf der Uhrzeit
hour = 14
greeting = f"Good {'morning' if hour < 12 else 'afternoon'}, user!"
print(greeting)  # Output: Good afternoon, user!

Verschachtelte bedingte Ausdrücke

Sie können bedingte Ausdrücke verschachteln, um mehrere Bedingungen zu behandeln, allerdings sollte das sparsam eingesetzt werden:

python
# Beispiel 1: Dreifach-Klassifizierung
score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(f"Grade: {grade}")  # Output: Grade: B
 
# Gehen wir das nach:
# score >= 90? Nein (85 < 90)
# Also den else-Teil auswerten: ("B" if score >= 80 else "C")
# score >= 80? Ja (85 >= 80)
# "B" zurückgeben
 
# Beispiel 2: Temperatur-Klassifizierung
temp = 15
category = "hot" if temp > 25 else ("warm" if temp > 15 else "cold")
print(f"Category: {category}")  # Output: Category: cold
 
# Beispiel 3: Altersbasierte Preise mit mehreren Stufen
age = 65
price = 0 if age < 5 else (8 if age < 18 else (12 if age < 65 else 8))
print(f"Ticket price: ${price}")  # Output: Ticket price: $8

Wichtiger Hinweis zur Verschachtelung: Auch wenn verschachtelte bedingte Ausdrücke möglich sind, können sie schnell schwer zu lesen werden. Das dritte Beispiel oben ist technisch korrekt, aber schwer zu verstehen. Wir besprechen bessere Alternativen in Abschnitt 10.7.

Bedingte Ausdrücke in Vergleichen

Sie können bedingte Ausdrücke innerhalb von Vergleichsoperationen verwenden:

python
# Beispiel 1: Vergleich mit einem bedingten Wert
base_value = 10
threshold = 15
is_large = True
result = base_value > (threshold if is_large else 5)
print(result)  # Output: False
# Wird ausgewertet als: base_value > 15 → 10 > 15 → False
 
# Beispiel 2: Bedingter Gleichheitscheck
user_role = "admin"
required_role = "admin" if True else "user"
has_access = user_role == required_role
print(has_access)  # Output: True

10.6) Bedingter Ausdruck vs. if-Anweisung (Ausdruck vs. Anweisung)

Zu verstehen, wann Sie einen bedingten Ausdruck gegenüber einer if-Anweisung verwenden sollten, ist entscheidend, um klaren, wartbaren Code zu schreiben. Der Unterschied beruht auf der grundlegenden Differenz zwischen Ausdrücken und Anweisungen in Python.

Ausdrücke vs. Anweisungen: Der Kernunterschied

Lassen Sie uns diese Begriffe präzise klären:

  • Ein Ausdruck ist eine Kombination aus Werten, Variablen, Operatoren und Funktionsaufrufen, die Python auswertet, um einen Wert zu erzeugen. Beispiele: 2 + 3, "hello".upper(), x if x > 0 else 0

  • Eine Anweisung ist eine vollständige Instruktion, die eine Aktion ausführt. Anweisungen liefern keine Werte—sie tun etwas. Beispiele: if x > 0: print("positive"), x = 5, for i in range(10): print(i)

python
# Das ist ein Ausdruck – er liefert einen Wert (7)
result = 3 + 4
 
# Das ist eine Anweisung – sie führt eine Aktion aus (gibt aus)
print("Hello")
 
# Ein bedingter Ausdruck ist ein Ausdruck
value = "yes" if True else "no"  # Liefert "yes"
 
# Eine if-Anweisung ist eine Anweisung
if True:
    value = "yes"
else:
    value = "no"
# Führt die Zuweisung aus, aber das if selbst liefert keinen Wert

Wann bedingte Ausdrücke verwendet werden sollten

Bedingte Ausdrücke sind ideal, wenn:

1. Sie zwischen zwei Werten für eine Zuweisung wählen:

python
# Gute Verwendung eines bedingten Ausdrucks
age = 16
status = "adult" if age >= 18 else "minor"
 
# Weniger knapp mit if-Anweisung
age = 16
if age >= 18:
    status = "adult"
else:
    status = "minor"

2. Sie inline innerhalb eines größeren Ausdrucks einen Wert brauchen:

python
# Gute Verwendung – Wert wird im f-string benötigt
items = 1
print(f"You have {items} {'item' if items == 1 else 'items'}")
# Output: You have 1 item
 
# Umständlich mit if-Anweisung – erfordert Vorab-Zuweisung
items = 1
if items == 1:
    word = "item"
else:
    word = "items"
print(f"You have {items} {word}")

3. Die Logik einfach ist und der Ausdruck gut lesbar bleibt:

python
# Gute Verwendung – einfache, klare Logik
discount = 0.15 if is_member else 0.05
max_value = a if a > b else b
sign = "positive" if x > 0 else "non-positive"

Wann if-Anweisungen verwendet werden sollten

Verwenden Sie if-Anweisungen, wenn:

1. Sie in jedem Zweig mehrere Anweisungen ausführen müssen:

python
# Verwenden Sie eine if-Anweisung – mehrere Aktionen pro Zweig
if score >= 90:
    grade = "A"
    message = "Excellent work!"
    bonus_points = 10
else:
    grade = "B"
    message = "Good job!"
    bonus_points = 5
 
# Bedingte Ausdrücke wären hier umständlich:
# grade = "A" if score >= 90 else "B"
# message = "Excellent work!" if score >= 90 else "Good job!"
# bonus_points = 10 if score >= 90 else 5
# (Wiederholt die Bedingung unnötig)

2. Sie mehr als zwei Zweige haben (elif):

python
# Verwenden Sie eine if-Anweisung – mehrere Zweige
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"
 
# Verschachtelte bedingte Ausdrücke werden schwer lesbar:
# grade = "A" if score >= 90 else ("B" if score >= 80 else ("C" if score >= 70 else "F"))

3. Einer der Zweige nichts tun soll:

python
# Verwenden Sie eine if-Anweisung – else-Zweig tut nichts
if error_occurred:
    print("An error occurred")
    log_error(error_message)
# Kein else nötig
 
# Ein bedingter Ausdruck erfordert beide Zweige:
# result = handle_error() if error_occurred else None  # Umständlich

Gegenüberstellung

Schauen wir uns dieselbe Logik in beiden Varianten an:

python
# Szenario: Eine Versandgebühr festlegen
 
# Version 1: Bedingter Ausdruck (gut für einfache Wertauswahl)
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
 
# Version 2: if-Anweisung (ausführlicher, aber für manche klarer)
order_total = 45.00
if order_total >= 50:
    shipping = 0
else:
    shipping = 5.99
 
# Beide erzeugen dasselbe Ergebnis
print(f"Shipping: ${shipping:.2f}")  # Output: Shipping: $5.99

Für diesen einfachen Fall ist der bedingte Ausdruck knapper und genauso klar. Aber betrachten Sie ein komplexeres Szenario:

python
# Szenario: Eine Bestellung mit mehreren Schritten verarbeiten
 
# Version 1: if-Anweisung (passend für mehrere Aktionen)
order_total = 45.00
if order_total >= 50:
    shipping = 0
    discount = 0.10
    message = "Free shipping applied!"
else:
    shipping = 5.99
    discount = 0
    message = "Add $5 more for free shipping"
 
# Version 2: Bedingte Ausdrücke (umständlich und repetitiv)
order_total = 45.00
shipping = 0 if order_total >= 50 else 5.99
discount = 0.10 if order_total >= 50 else 0
message = "Free shipping applied!" if order_total >= 50 else "Add $5 more for free shipping"

Die if-Version ist hier klarer, weil sie zusammengehörige Logik bündelt und die Bedingung nicht wiederholt.

10.7) Wann bedingte Ausdrücke die Lesbarkeit verbessern (und wann nicht)

Bedingte Ausdrücke sind ein leistungsfähiges Werkzeug, aber wie jedes Werkzeug können sie falsch eingesetzt werden. Das Ziel ist immer, Code zu schreiben, der nicht nur korrekt ist, sondern auch klar und wartbar. Lassen Sie uns Richtlinien dafür betrachten, wie Sie bedingte Ausdrücke effektiv einsetzen.

Wann bedingte Ausdrücke die Lesbarkeit verbessern

1. Einfache, klare Wahl zwischen zwei Werten

Bedingte Ausdrücke sind hervorragend, wenn die Logik unkompliziert ist:

python
# Hervorragende Verwendung – glasklar
discount = 0.20 if is_member else 0.10
 
# Hervorragende Verwendung – offensichtliche Bedeutung
status = "active" if user_logged_in else "inactive"
 
# Hervorragende Verwendung – einfache boolesche Auswahl
can_vote = True if age >= 18 else False
# Das könnte sogar noch einfacher sein: can_vote = age >= 18

2. Inline-Wertauswahl in Ausdrücken

Wenn Sie einen Wert inline benötigen und ein Auslagern umständlich wäre:

python
# Hervorragende Verwendung – natürliche Pluralbildung
print(f"Found {count} {'result' if count == 1 else 'results'}")
 
# Hervorragende Verwendung – inline Anpassung einer Berechnung
total = base_price * (0.9 if is_sale else 1.0)
 
# Hervorragende Verwendung – bedingte Formatierung
output = f"Status: {status.upper() if is_error else status.lower()}"

3. Standardwerte setzen

Bedingte Ausdrücke eignen sich gut, um Ersatzwerte bereitzustellen:

python
# Hervorragende Verwendung – Standardwert-Muster
display_name = username if username else "Guest"
 
# Hervorragende Verwendung – Konfiguration mit Defaults
page_size = user_preference if user_preference else 25
 
# Hervorragende Verwendung – sichere Division
result = total / count if count > 0 else 0

Wann bedingte Ausdrücke die Lesbarkeit verschlechtern

1. Verschachtelte bedingte Ausdrücke

Verschachtelung erzeugt schwer lesbaren Code:

python
# Schlechte Lesbarkeit – verschachtelte bedingte Ausdrücke
grade = "A" if score >= 90 else ("B" if score >= 80 else ("C" if score >= 70 else "F"))
 
# Viel besser – if-elif-else-Anweisung verwenden
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"

Die if-elif-else-Version ist sofort verständlich. Der verschachtelte bedingte Ausdruck erfordert sorgfältiges Parsen, um die Logik zu verstehen.

2. Komplexe Bedingungen

Wenn die Bedingung selbst komplex ist, werden bedingte Ausdrücke schwer lesbar:

python
# Schlechte Lesbarkeit – komplexe Bedingung
result = "eligible" if age >= 18 and income > 30000 and credit_score > 650 and not has_bankruptcy else "not eligible"
 
# Besser – if-Anweisung mit klarer Struktur verwenden
if age >= 18 and income > 30000 and credit_score > 650 and not has_bankruptcy:
    result = "eligible"
else:
    result = "not eligible"
 
# Noch besser – die Bedingung aufteilen
meets_age_requirement = age >= 18
meets_income_requirement = income > 30000
meets_credit_requirement = credit_score > 650
has_clean_record = not has_bankruptcy
 
if meets_age_requirement and meets_income_requirement and meets_credit_requirement and has_clean_record:
    result = "eligible"
else:
    result = "not eligible"

3. Mehrere bedingte Ausdrücke in einer Zeile

Mehrere bedingte Ausdrücke in einer einzigen Zeile zu kombinieren:

python
# Schlechte Lesbarkeit – zu viel in einer Zeile
price = base * (0.9 if is_member else 1.0) * (0.85 if is_sale else 1.0) + (0 if free_shipping else 5.99)
 
# Besser – in Schritte aufteilen
member_multiplier = 0.9 if is_member else 1.0
sale_multiplier = 0.85 if is_sale else 1.0
shipping_cost = 0 if free_shipping else 5.99
price = base * member_multiplier * sale_multiplier + shipping_cost
 
# Oder eine if-Anweisung verwenden, wenn die Logik komplex ist
if is_member:
    price = base * 0.9
else:
    price = base
 
if is_sale:
    price = price * 0.85
 
if free_shipping:
    shipping_cost = 0
else:
    shipping_cost = 5.99
 
price = price + shipping_cost

Das Fazit

Verwenden Sie bedingte Ausdrücke, wenn sie Ihren Code klarer und knapper machen. Verwenden Sie if-Anweisungen, wenn Sie brauchen:

  • Mehrere Anweisungen pro Zweig
  • Mehr als zwei Zweige (elif)
  • Komplexe Bedingungen oder Logik
  • Seiteneffekte oder Aktionen statt Wertauswahl

Wenn Sie unsicher sind, bevorzugen Sie Klarheit gegenüber Cleverness. Code wird viel häufiger gelesen als geschrieben, also optimieren Sie für die Lesenden.


Bedingte Ausdrücke sind eine wertvolle Ergänzung Ihres Python-Werkzeugkastens. Sie erlauben es Ihnen, knappen, eleganten Code zu schreiben, wenn Sie zwischen zwei Werten wählen. Wenn Sie verstehen, wann sie die Lesbarkeit verbessern und wann nicht, können Sie fundierte Entscheidungen darüber treffen, wann Sie sie einsetzen.

Die wichtigsten Prinzipien, die Sie sich merken sollten:

  1. Bedingte Ausdrücke liefern Werte und können überall dort verwendet werden, wo ein Wert benötigt wird
  2. Die Syntax lautet value_if_true if condition else value_if_false
  3. Python wertet nur den relevanten Zweig aus (Kurzschlussauswertung)
  4. Sie sind ideal für einfache Wertauswahl in Zuweisungen und Ausdrücken
  5. Verwenden Sie if-Anweisungen für mehrere Aktionen, komplexe Logik oder mehr als zwei Zweige
  6. Priorisieren Sie Lesbarkeit—wenn ein bedingter Ausdruck schwer zu verstehen ist, verwenden Sie stattdessen eine if-Anweisung

Während Sie weiter Python lernen, entwickeln Sie ein Gefühl dafür, wann bedingte Ausdrücke Ihren Code verbessern. Üben Sie zuerst ihre Verwendung in einfachen Fällen, und nach und nach werden Sie die Muster erkennen, in denen sie glänzen. Im nächsten Kapitel werden wir while-Schleifen (while loops) erkunden, die es uns erlauben, Aktionen abhängig von Bedingungen zu wiederholen—und damit auf den Entscheidungsfähigkeiten aufbauen, die wir in diesem Teil des Buches entwickelt haben.

© 2025. Primesoft Co., Ltd.
support@primesoft.ai