Python & AI Tutorials Logo
Python Programmierung

8. Entscheidungen mit if-Anweisungen treffen

In den Programmen, die wir bisher geschrieben haben, führt Python jede Codezeile von oben nach unten aus, eine Anweisung nach der anderen. Aber Programme in der realen Welt müssen Entscheidungen treffen – je nach Bedingung unterschiedlichen Code ausführen. Soll eine Fehlermeldung angezeigt werden? Soll ein Rabatt berechnet werden? Sollen wir die Eingabe nochmals abfragen? Die Antwort hängt von der Situation ab.

Bedingte Anweisungen (conditional statements) ermöglichen es Ihren Programmen, diese Entscheidungen zu treffen. Sie erlauben Python, bestimmte Codeblöcke nur dann auszuführen, wenn bestimmte Bedingungen erfüllt sind, und sie andernfalls zu überspringen. Dieses Kapitel führt Pythons if-Anweisung und ihre Varianten ein, die die Grundlage für Entscheidungslogik in Ihren Programmen bilden.

Wenn Sie bedingte Anweisungen beherrschen, können Sie Programme schreiben, die intelligent auf Benutzereingaben reagieren, unterschiedliche Szenarien angemessen behandeln und Probleme lösen, die logisches Denken erfordern.

8.1) Einfache if-Anweisungen

Die grundlegendste Form der Entscheidungslogik in Python ist die einfache if-Anweisung. Sie sagt Python: „Wenn diese Bedingung wahr ist, führe diesen Codeblock aus. Andernfalls überspringe ihn und mache weiter.“

8.1.1) Der Aufbau einer if-Anweisung

Hier ist die grundlegende Syntax einer if-Anweisung:

python
if condition:
    # Code, der ausgeführt wird, wenn condition True ist
    statement1
    statement2
    # ... weitere Anweisungen

Zerlegen wir die Teile:

  1. Das Schlüsselwort if: Dies startet die bedingte Anweisung
  2. Die Bedingung: Ein boolescher Ausdruck, der zu True oder False auswertet (aus Kapitel 7)
  3. Der Doppelpunkt (:): Er ist erforderlich und markiert das Ende der Bedingungszeile
  4. Der eingerückte Codeblock: Alle Anweisungen, die unter dem if eingerückt sind, werden nur ausgeführt, wenn die Bedingung True ist

Einrückung ist in Python entscheidend. Die eingerückten Zeilen bilden einen Codeblock, der zur if-Anweisung gehört. Python verwendet Einrückung (typischerweise 4 Leerzeichen), um zu bestimmen, welche Anweisungen Teil des bedingten Blocks sind.

Hier ein einfaches Beispiel:

python
# temperature_check.py
temperature = 30
 
if temperature > 25:
    print("It's a warm day!")
    print("Consider wearing light clothing.")
 
print("Have a great day!")  # Dies wird immer ausgeführt

Ausgabe:

It's a warm day!
Consider wearing light clothing.
Have a great day!

In diesem Beispiel:

  • Die Bedingung temperature > 25 wertet zu True aus (da 30 > 25)
  • Beide eingerückten print()-Anweisungen werden ausgeführt, weil sie Teil des if-Blocks sind
  • Die letzte print()-Anweisung wird immer ausgeführt, weil sie nicht eingerückt ist – sie gehört nicht zum if-Block

Sehen wir uns nun an, was passiert, wenn die Bedingung False ist:

python
# temperature_check_cool.py
temperature = 18
 
if temperature > 25:
    print("It's a warm day!")
    print("Consider wearing light clothing.")
 
print("Have a great day!")  # Dies wird immer ausgeführt

Ausgabe:

Have a great day!

Dieses Mal:

  • Die Bedingung temperature > 25 wertet zu False aus (da 18 nicht größer als 25 ist)
  • Beide eingerückten Anweisungen werden vollständig übersprungen
  • Nur die letzte print()-Anweisung wird ausgeführt, weil sie außerhalb des if-Blocks steht

Yes

No

Start

Ist die Bedingung True?

Eingerückten Block ausführen

Eingerückten Block überspringen

Mit Rest des Programms fortfahren

Ende

8.1.2) Bedingungen aus Kapitel 7 verwenden

Jeder boolesche Ausdruck aus Kapitel 7 kann als Bedingung in einer if-Anweisung verwendet werden. Dazu gehören:

Vergleichsoperatoren:

python
# voting_eligibility.py
age = 16
 
if age >= 18:
    print("You are eligible to vote.")
# Nichts wird ausgegeben, da 16 >= 18 False ist
 
score = 85
 
if score >= 60:
    print("You passed the exam!")  # Output: You passed the exam!

Mitgliedschaftstests mit in und not in:

python
# user_access.py
username = "alice"
banned_users = ["bob", "charlie", "dave"]
 
if username not in banned_users:
    print(f"Welcome, {username}!")  # Output: Welcome, alice!
 
favorite_color = "blue"
 
if "u" in favorite_color:
    print("Your favorite color contains the letter 'u'.")  # Output: Your favorite color contains the letter 'u'.

Direkte boolesche Werte:

python
# weather_check.py
is_raining = True
 
if is_raining:
    print("Don't forget your umbrella!")  # Output: Don't forget your umbrella!

Truthiness und Falsiness (aus Kapitel 7.4):

python
# name_input.py
user_input = input("Enter your name: ")
 
if user_input:  # Leerer String ist falsy, nicht-leerer ist truthy
    print(f"Hello, {user_input}!")
else:
    print("You didn't enter a name.")

8.1.3) Mehrere Anweisungen im if-Block

Sie können so viele Anweisungen in einen if-Block aufnehmen, wie Sie benötigen. Alle eingerückten Anweisungen unter der if-Zeile gehören zu diesem Block:

python
# bank_withdrawal.py
balance = 1500
withdrawal = 200
 
if withdrawal <= balance:
    balance = balance - withdrawal  # withdrawal von balance abziehen
    print(f"Withdrawal successful!")
    print(f"Your new balance is: ${balance}")
    print("Thank you for your transaction.")
 
print("Transaction complete.")  # Wird immer ausgeführt

Ausgabe:

Withdrawal successful!
Your new balance is: $1300
Thank you for your transaction.
Transaction complete.

Alle vier Anweisungen werden ausgeführt, weil withdrawal <= balance True ist. Wenn wir die Auszahlung auf 2000 ändern:

python
# bank_withdrawal_insufficient.py
balance = 1500
withdrawal = 2000
 
if withdrawal <= balance:
    balance = balance - withdrawal
    print(f"Withdrawal successful!")
    print(f"Your new balance is: ${balance}")
    print("Thank you for your transaction.")
 
print("Transaction complete.")  # Wird immer ausgeführt

Ausgabe:

Transaction complete.

Jetzt wird keine der eingerückten Anweisungen ausgeführt, weil die Bedingung False ist. Der Kontostand bleibt unverändert bei 1500.

8.2) if-else für Entweder-oder-Entscheidungen verwenden

Oft müssen Sie zwischen zwei Alternativen wählen: einen Codeblock ausführen, wenn eine Bedingung wahr ist, und einen anderen, wenn sie falsch ist. Die if-else-Anweisung übernimmt diese Entweder-oder-Entscheidungen.

8.2.1) Der Aufbau von if-else

Hier ist die Syntax:

python
if condition:
    # Code, der ausgeführt wird, wenn condition True ist
    statement1
    statement2
else:
    # Code, der ausgeführt wird, wenn condition False ist
    statement3
    statement4

Der else-Zweig stellt einen alternativen Pfad bereit. Genau einer der beiden Blöcke wird ausgeführt – niemals beide, niemals keiner.

Yes

No

Start

Ist die Bedingung True?

if-Block ausführen

else-Block ausführen

Mit Rest des Programms fortfahren

Ende

Sehen wir uns ein praktisches Beispiel an:

python
# age_verification.py
age = int(input("Enter your age: "))
 
if age >= 18:
    print("You are an adult.")
    print("You can vote in elections.")
else:
    print("You are a minor.")
    print("You cannot vote yet.")
 
print("Thank you for providing your age.")

Wenn Sie 25 eingeben:

You are an adult.
You can vote in elections.
Thank you for providing your age.

Wenn Sie 15 eingeben:

You are a minor.
You cannot vote yet.
Thank you for providing your age.

Beachten Sie, dass genau einer der beiden Blöcke ausgeführt wird, abhängig von der Bedingung. Die letzte print()-Anweisung wird immer ausgeführt, weil sie außerhalb beider Blöcke steht.

8.2.2) Binäre Entscheidungen treffen

if-else ist ideal für binäre Entscheidungen, bei denen es genau zwei mögliche Ergebnisse gibt:

python
# even_odd_checker.py
number = int(input("Enter a number: "))
 
if number % 2 == 0:
    print(f"{number} is even.")
else:
    print(f"{number} is odd.")
python
# password_verification.py
stored_password = "python123"
entered_password = input("Enter password: ")
 
if entered_password == stored_password:
    print("Access granted.")
    print("Welcome to the system!")
else:
    print("Access denied.")
    print("Incorrect password.")

8.3) Mehrere Auswahlmöglichkeiten mit if-elif-else

Entscheidungen in der realen Welt umfassen oft mehr als zwei Optionen. Sollen wir Standardversand, Expressversand oder Overnight-Versand berechnen? Ist eine Note eine A, B, C, D oder F? Die if-elif-else-Kette behandelt mehrere sich gegenseitig ausschließende Alternativen.

8.3.1) Der Aufbau von if-elif-else

Hier ist die Syntax:

python
if condition1:
    # Ausführen, wenn condition1 True ist
    block1
elif condition2:
    # Ausführen, wenn condition1 False und condition2 True ist
    block2
elif condition3:
    # Ausführen, wenn condition1 und condition2 False und condition3 True ist
    block3
else:
    # Ausführen, wenn alle Bedingungen False sind
    block4

Wichtige Punkte zu if-elif-else-Ketten:

  1. elif ist kurz für „else if“: Es stellt zusätzliche Bedingungen bereit, die geprüft werden
  2. Die Reihenfolge ist wichtig: Python prüft Bedingungen von oben nach unten
  3. Erster Treffer gewinnt: Sobald eine Bedingung True ist, wird ihr Block ausgeführt und der Rest übersprungen
  4. Genau ein Block wird ausgeführt: Höchstens ein Block in der Kette läuft
  5. else ist optional: Es fängt alle Fälle ab, die von den vorherigen Bedingungen nicht erfasst wurden

Yes

No

Yes

No

Yes

No

Start

Ist condition1 True?

block1 ausführen

Ist condition2 True?

block2 ausführen

Ist condition3 True?

block3 ausführen

else-Block ausführen

Mit Rest des Programms fortfahren

Ende

Sehen wir uns ein praktisches Beispiel an:

python
# grade_calculator.py
score = int(input("Enter your exam score (0-100): "))
 
if score >= 90:
    grade = "A"
    print("Excellent work!")
elif score >= 80:
    grade = "B"
    print("Good job!")
elif score >= 70:
    grade = "C"
    print("Satisfactory.")
elif score >= 60:
    grade = "D"
    print("You passed, but consider reviewing the material.")
else:
    grade = "F"
    print("Unfortunately, you did not pass.")
 
print(f"Your grade is: {grade}")

Wenn Sie 85 eingeben:

Good job!
Your grade is: B

Verfolgen wir, was passiert:

  1. score >= 90 prüfen: False (85 ist nicht >= 90), also diesen Block überspringen
  2. score >= 80 prüfen: True (85 >= 80), also diesen Block ausführen
  3. Alle verbleibenden elif- und else-Blöcke werden übersprungen, da wir eine passende Bedingung gefunden haben

Wenn Sie 55 eingeben:

Unfortunately, you did not pass.
Your grade is: F

Alle Bedingungen sind False, daher wird der else-Block ausgeführt.

8.3.2) Warum die Reihenfolge in elif-Ketten wichtig ist

Die Reihenfolge der Bedingungen ist entscheidend, weil Python mit dem Prüfen aufhört, sobald es eine Bedingung findet, die True ist. Betrachten Sie dieses falsche Benotungssystem:

python
# INCORRECT ORDER - Don't do this!
score = 85
 
if score >= 60:  # Dies wird zuerst zutreffen!
    grade = "D"
elif score >= 70:
    grade = "C"
elif score >= 80:
    grade = "B"
elif score >= 90:
    grade = "A"
else:
    grade = "F"
 
print(f"Your grade is: {grade}")  # Output: Your grade is: D

Das ergibt ein falsches Ergebnis! Die Punktzahl 85 sollte ein B ergeben, aber sie erhält ein D, weil score >= 60 zuerst geprüft wird und True ist. Python gelangt nie zur Bedingung score >= 80.

Ordnen Sie Bedingungen immer von der spezifischsten zur allgemeinsten:

python
# CORRECT ORDER
score = 85
 
if score >= 90:  # Am spezifischsten
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:  # Am wenigsten spezifisch
    grade = "F"
 
print(f"Your grade is: {grade}")  # Output: Your grade is: B

8.3.3) elif ohne else verwenden

Der else-Zweig ist optional. Manchmal möchten Sie nur bestimmte Fälle behandeln und für andere nichts tun:

python
# weekend_checker.py
day = input("Enter a day of the week: ").lower()
 
if day == "saturday" or day == "sunday":
    print("It's the weekend! Time to relax.")
elif day == "friday":
    print("It's Friday! The weekend is almost here.")
elif day in ["monday", "tuesday", "wednesday", "thursday"]:
    print("It's a weekday. Time to work or study.")
# Kein else-Zweig – wenn nichts davon zutrifft, passiert nichts
 
print("Have a great day!")

Wenn Sie „holiday“ eingeben:

Have a great day!

Keine Bedingung hat gepasst, und es gibt keinen else-Zweig, daher wird nur die letzte print()-Anweisung ausgeführt.

8.4) Verschachtelte if-Anweisungen

Manchmal müssen Sie eine Entscheidung innerhalb einer Entscheidung treffen. Verschachtelte if-Anweisungen platzieren eine Bedingung in einer anderen, sodass Sie zusätzliche Bedingungen erst prüfen, nachdem eine erste Bedingung erfüllt ist.

8.4.1) Verschachtelte Bedingungen verstehen

Verschachtelte if-Anweisungen sind mächtig, weil Sie damit Bedingungen vermeiden können, die zu einem bestimmten Zeitpunkt noch keinen Sinn ergeben. Zum Beispiel ist es sinnlos, nach einem Passwort zu fragen, wenn der Benutzer kein Konto hat. Durch Verschachtelung können Sie Ihre Logik so strukturieren, dass sie realen Entscheidungsprozessen entspricht, bei denen einige Fragen erst nach anderen Sinn ergeben.

Eine verschachtelte if-Anweisung ist einfach eine if-Anweisung (oder if-elif-else-Kette) innerhalb eines anderen if-Blocks:

python
if outer_condition:
    # Dieser Code wird ausgeführt, wenn outer_condition True ist
    if inner_condition:
        # Dieser Code wird ausgeführt, wenn BEIDE Bedingungen True sind
        inner_block
    else:
        # Dies wird ausgeführt, wenn outer_condition True, aber inner_condition False ist
        inner_else_block
else:
    # Dies wird ausgeführt, wenn outer_condition False ist
    outer_else_block

Die innere if-Anweisung wird nur ausgewertet, wenn die äußere Bedingung True ist. So entsteht eine Hierarchie von Entscheidungen.

No

Yes

Yes

No

Start

Outer condition True?

outer_else_block ausführen

Inner condition True?

inner if-Block ausführen

inner else-Block ausführen

Fortfahren

Ende

Hier ein einfaches Beispiel:

python
# account_login.py
has_account = input("Do you have an account? (yes/no): ").lower() == "yes"
 
if has_account:
    print("Welcome back!")
    password = input("Enter your password: ")
    
    if password == "secret123":
        print("Login successful!")
        print("Access granted to your dashboard.")
    else:
        print("Incorrect password.")
        print("Access denied.")
else:
    print("Please create an account first.")
    print("Visit our registration page.")

Wenn Sie „yes“ antworten und das richtige Passwort eingeben:

Welcome back!
Login successful!
Access granted to your dashboard.

Wenn Sie „yes“ antworten, aber das falsche Passwort eingeben:

Welcome back!
Incorrect password.
Access denied.

Wenn Sie „no“ antworten:

Please create an account first.
Visit our registration page.

Beachten Sie, dass die Passwortprüfung nur stattfindet, wenn der Benutzer ein Konto hat. Dies ist der entscheidende Vorteil der Verschachtelung – Sie können unnötige Prüfungen vermeiden.

8.4.2) Wann verschachtelte if-Anweisungen verwenden

Verschachtelte if-Anweisungen sind nützlich, wenn:

  1. Entscheidungen von vorherigen Entscheidungen abhängen: Sie müssen etwas erst prüfen, nachdem eine andere Bedingung erfüllt ist
  2. Sie Entscheidungsbäume (decision trees) erstellen: Jede Ebene schränkt die Möglichkeiten weiter ein
  3. Sie Voraussetzungen validieren: Zuerst grundsätzliche Anforderungen prüfen, bevor detaillierte Anforderungen überprüft werden
  4. Sie unnötige Prüfungen vermeiden wollen: Teure Operationen überspringen, wenn frühere Bedingungen fehlschlagen

Beispiel: Kreditwürdigkeit (Eligibility) für einen Kredit

python
# loan_eligibility.py
age = int(input("Enter your age: "))
 
if age >= 18:
    print("Age requirement met.")
    income = float(input("Enter your annual income: $"))
    
    if income >= 30000:
        print("Income requirement met.")
        credit_score = int(input("Enter your credit score: "))
        
        if credit_score >= 650:
            print("Congratulations! You are eligible for a loan.")
            print("Please proceed to the application form.")
        else:
            print("Sorry, your credit score is too low.")
            print("Minimum required: 650")
    else:
        print("Sorry, your income is too low.")
        print("Minimum required: $30,000")
else:
    print("Sorry, you must be 18 or older to apply.")

Dies erzeugt einen Entscheidungsbaum, bei dem jede Ebene von der vorherigen abhängt. Wenn das Alter unter 18 ist, fragen wir niemals nach Einkommen oder Kredit-Score.

8.4.3) Übermäßige Verschachtelung vermeiden

Obwohl Verschachtelung mächtig ist, machen zu viele Ebenen Code schwer lesbar und schwer verständlich. Betrachten Sie dieses tief verschachtelte Beispiel:

python
# Zu tief verschachtelt – schwer nachzuvollziehen
if condition1:
    if condition2:
        if condition3:
            if condition4:
                if condition5:
                    print("All conditions met!")

Das ist schwer zu lesen und zu warten. Hier ein paar Strategien, um die Verschachtelung zu reduzieren:

Strategie 1: Bedingungen kombinieren, wenn es sinnvoll ist

Wir werden den Operator and in Kapitel 9 ausführlich kennenlernen, aber fürs Erste reicht zu wissen, dass er mehrere Bedingungen auf einmal prüfen kann:

python
# Besser: 'and' verwenden, um Bedingungen zu kombinieren (Kapitel 9 erklärt dies ausführlich)
# Wir lernen 'and' in Kapitel 9 kennen, aber fürs Erste reicht zu wissen,
# dass es prüft, ob alle Bedingungen wahr sind
if condition1 and condition2 and condition3 and condition4 and condition5:
    print("All conditions met!")

Strategie 2: Frühe Rückgaben (early returns) verwenden (wenn Sie mit Funktionen arbeiten, die wir in Kapitel 19 kennenlernen werden):

python
# In einer Funktion können wir früh zurückkehren
def check_eligibility(age, income, credit_score):
    if age < 18:
        return "Too young"
    if income < 30000:
        return "Income too low"
    if credit_score < 650:
        return "Credit score too low"
    return "Eligible"

Strategie 3: Mit elif „abflachen“, wenn es passt:

python
# Anstatt verschachtelter ifs, die Bereiche prüfen
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
# ... und so weiter

8.5) Häufige Fallen bei if-Anweisungen (Einrückung, Doppelpunkte und Logik)

Selbst erfahrene Programmierer machen Fehler bei if-Anweisungen. In diesem Abschnitt behandeln wir die häufigsten Fehler, die Einsteiger machen, und wie Sie diese vermeiden können.

8.5.1) Einrückungsfehler

Python verwendet Einrückung, um festzustellen, welche Anweisungen zu welchem Block gehören. Falsche Einrückung ist eine der häufigsten Fehlerquellen.

Problem 1: Fehlende Einrückung

python
# INCORRECT - IndentationError
age = 20
 
if age >= 18:
print("You are an adult.")  # Nicht eingerückt!

Das erzeugt:

  File "example.py", line 4
    print("You are an adult.")
    ^
IndentationError: expected an indented block

Lösung: Rücken Sie den Block unter einer if-Anweisung immer ein:

python
# CORRECT
age = 20
 
if age >= 18:
    print("You are an adult.")  # Korrekt eingerückt

Problem 2: Inkonsistente Einrückung

python
# INCORRECT - Mischen von Leerzeichen und Tabs oder inkonsistente Leerzeichen
if temperature > 30:
    print("It's hot!")
      print("Stay hydrated!")  # Zusätzliche Leerzeichen – inkonsistente Einrückung

Lösung: Verwenden Sie eine konsistente Einrückung (4 Leerzeichen sind der Python-Standard):

python
# CORRECT
if temperature > 30:
    print("It's hot!")
    print("Stay hydrated!")  # Gleiches Einrückungsniveau

Problem 3: Falsche Einrückung bei Verschachtelung

python
# INCORRECT - Falsches Einrückungsniveau
if has_account:
    print("Welcome!")
    if password == "correct":
    print("Login successful!")  # Sollte weiter eingerückt sein

Lösung: Jede verschachtelte Ebene benötigt zusätzliche Einrückung:

python
# CORRECT
if has_account:
    print("Welcome!")
    if password == "correct":
        print("Login successful!")  # Korrekt eingerückt für verschachtelten Block

8.5.2) Fehlende Doppelpunkte

Der Doppelpunkt (:) am Ende von if-, elif- und else-Zeilen ist zwingend erforderlich. Ihn zu vergessen ist ein sehr häufiger Fehler:

python
# INCORRECT - SyntaxError: missing colon
if age >= 18
    print("Adult")

Das erzeugt:

  File "example.py", line 2
    if age >= 18
                ^
SyntaxError: invalid syntax

Lösung: Fügen Sie den Doppelpunkt immer ein:

python
# CORRECT
if age >= 18:
    print("Adult")

Dasselbe gilt für elif und else:

python
# CORRECT - Alle Doppelpunkte vorhanden
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
else:
    grade = "F"

8.5.3) Falsche Vergleichsoperatoren

Problem 1: Zuweisung (=) statt Vergleich (==) verwenden

python
# INCORRECT - Das weist age den Wert 18 zu, vergleicht nicht!
age = 20
 
if age = 18:  # SyntaxError
    print("You are 18")

Lösung: Verwenden Sie == für Vergleiche:

python
# CORRECT
age = 20
 
if age == 18:
    print("You are 18")

8.5.4) Unerreichbarer Code durch Logikfehler

Problem: Bedingungen, die niemals True sein können

python
# INCORRECT - Das elif kann niemals ausgeführt werden
score = 85
 
if score >= 60:
    print("You passed!")
elif score >= 80:  # Dies wird niemals ausgeführt!
    print("You got a B!")

Wenn score 85 ist, ist die erste Bedingung (score >= 60) True, daher wird das elif niemals geprüft. Die Reihenfolge ist falsch.

Lösung: Ordnen Sie Bedingungen von der spezifischsten zur allgemeinsten:

python
# CORRECT
score = 85
 
if score >= 80:
    print("You got a B!")
elif score >= 60:
    print("You passed!")

8.5.5) Leere if-Blöcke

Sie können in Python keinen leeren if-Block haben:

python
# INCORRECT - SyntaxError
if temperature > 30:
    # Ich füge hier später Code ein
 
print("Done")

Das erzeugt:

  File "example.py", line 3
    print("Done")
    ^
IndentationError: expected an indented block

Lösung: Verwenden Sie die Anweisung pass als Platzhalter (im nächsten Abschnitt behandelt):

python
# CORRECT - pass als Platzhalter verwenden
if temperature > 30:
    pass  # TODO: Fügen Sie hier später Code ein
 
print("Done")

8.6) pass als Platzhalter in Blöcken verwenden

Manchmal beim Schreiben von Code wissen Sie, dass Sie eine if-Anweisung benötigen, aber noch nicht, welcher Code darin stehen soll. Python erlaubt keine leeren Codeblöcke, daher brauchen Sie eine Möglichkeit, einen gültigen, aber „nichts tuenden“ Block zu erstellen. Genau dafür gibt es die pass-Anweisung.

8.6.1) Was ist pass?

Die pass-Anweisung ist eine Null-Operation – wenn Python sie ausführt, passiert nichts. Sie ist ein Platzhalter, der es Ihnen ermöglicht, syntaktisch korrekten Code zu schreiben, auch wenn Sie die Implementierung noch nicht fertig haben.

python
if condition:
    pass  # Vorerst nichts tun

Denken Sie an pass als eine Art, Python zu sagen: „Ich weiß, dass ich hier Code brauche, aber ich fülle ihn später ein.“ Das ist besonders während der Entwicklung nützlich, wenn Sie die Struktur Ihres Programms skizzieren.

8.6.2) Warum pass notwendig ist

Python verlangt mindestens eine Anweisung in jedem Codeblock. Ein leerer Block verursacht einen Syntaxfehler:

python
# INCORRECT - Das verursacht einen Fehler
if age >= 18:
    # TODO: Logik für Erwachsene hier hinzufügen
 
print("Done")

Fehler:

  File "example.py", line 3
    print("Done")
    ^
IndentationError: expected an indented block

Die Verwendung von pass macht den Code syntaktisch gültig:

python
# CORRECT - pass als Platzhalter verwenden
if age >= 18:
    pass  # TODO: Logik für Erwachsene hier hinzufügen
 
print("Done")

8.6.3) Häufige Verwendungen von pass

Verwendung 1: Platzhalter während der Entwicklung

Wenn Sie die Struktur Ihres Programms umreißen, aber noch nicht alles implementiert haben:

python
# user_system.py
user_type = input("Enter user type (admin/user/guest): ").lower()
 
if user_type == "admin":
    pass  # TODO: Admin-Funktionen implementieren
elif user_type == "user":
    pass  # TODO: User-Funktionen implementieren
elif user_type == "guest":
    print("Welcome, guest! Limited access granted.")
else:
    print("Invalid user type.")

So können Sie das Programm ausführen und die Teile testen, die Sie bereits implementiert haben, während Sie Platzhalter für zukünftige Arbeiten lassen.

Verwendung 2: In einem Zweig absichtlich nichts tun

Manchmal möchten Sie in bestimmten Fällen wirklich nichts tun, müssen aber andere Fälle behandeln:

python
# positive_numbers.py
# Nur positive Zahlen verarbeiten
number = int(input("Enter a number: "))
 
if number > 0:
    result = number * 2
    print(f"Double of {number} is {result}")
elif number == 0:
    pass  # Null ist gültig, erfordert aber keine Aktion
else:
    print("Negative numbers are not allowed.")

8.6.4) pass in anderen Kontexten

Auch wenn wir uns hier auf pass in if-Anweisungen konzentriert haben, werden Sie ihm in anderen Kontexten begegnen, wenn Sie mehr Python lernen:

  • Funktionen (Kapitel 20): Platzhalter für Funktionskörper
  • Klassen (Kapitel 31): Platzhalter für Klassendefinitionen
  • Schleifen (loops) (Kapitel 11–12): Platzhalter für Schleifen-Körper
  • Exception-Handler (Kapitel 29): Absichtliches Ignorieren von Fehlern

Merken Sie sich zunächst, dass pass Ihr Werkzeug ist, um gültige, aber leere Codeblöcke zu erstellen, wenn Sie diese benötigen.


Alles zusammenführen

In diesem Kapitel haben Sie gelernt, wie Sie Ihre Programme durch bedingte Anweisungen intelligent und reaktionsfähig machen. Fassen wir die wichtigsten Konzepte zusammen:

Einfache if-Anweisungen führen Code nur aus, wenn eine Bedingung wahr ist:

python
if temperature > 30:
    print("It's hot outside!")

if-else-Anweisungen wählen zwischen zwei Alternativen:

python
if age >= 18:
    print("Adult")
else:
    print("Minor")

if-elif-else-Ketten behandeln mehrere sich gegenseitig ausschließende Optionen:

python
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"

Verschachtelte if-Anweisungen treffen Entscheidungen innerhalb von Entscheidungen:

python
if has_account:
    if password_correct:
        print("Welcome!")
    else:
        print("Wrong password")
else:
    print("Create an account")

Häufige Fallen, die Sie vermeiden sollten:

  • Fehlende Doppelpunkte nach if, elif und else
  • Falsche oder inkonsistente Einrückung
  • Verwendung von = statt == für Vergleiche
  • Falsche Reihenfolge in elif-Ketten
  • Leere Blöcke ohne pass

Die pass-Anweisung dient als Platzhalter für leere Blöcke während der Entwicklung.

Sie verfügen nun über die Werkzeuge, um Programme zu schreiben, die auf Basis von Bedingungen intelligente Entscheidungen treffen. Im nächsten Kapitel lernen wir boolesche Logikoperatoren (and, or, not) kennen, mit denen Sie mehrere Bedingungen zu einer komplexeren Entscheidungslogik kombinieren können. Das macht Ihre if-Anweisungen noch mächtiger und ausdrucksstärker.

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