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:
if condition:
# Code, der ausgeführt wird, wenn condition True ist
statement1
statement2
# ... weitere AnweisungenZerlegen wir die Teile:
- Das Schlüsselwort
if: Dies startet die bedingte Anweisung - Die Bedingung: Ein boolescher Ausdruck, der zu
TrueoderFalseauswertet (aus Kapitel 7) - Der Doppelpunkt (
:): Er ist erforderlich und markiert das Ende der Bedingungszeile - Der eingerückte Codeblock: Alle Anweisungen, die unter dem
ifeingerückt sind, werden nur ausgeführt, wenn die BedingungTrueist
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:
# 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ührtAusgabe:
It's a warm day!
Consider wearing light clothing.
Have a great day!In diesem Beispiel:
- Die Bedingung
temperature > 25wertet zuTrueaus (da 30 > 25) - Beide eingerückten
print()-Anweisungen werden ausgeführt, weil sie Teil desif-Blocks sind - Die letzte
print()-Anweisung wird immer ausgeführt, weil sie nicht eingerückt ist – sie gehört nicht zumif-Block
Sehen wir uns nun an, was passiert, wenn die Bedingung False ist:
# 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ührtAusgabe:
Have a great day!Dieses Mal:
- Die Bedingung
temperature > 25wertet zuFalseaus (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 desif-Blocks steht
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:
# 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:
# 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:
# 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):
# 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:
# 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ührtAusgabe:
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:
# 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ührtAusgabe:
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:
if condition:
# Code, der ausgeführt wird, wenn condition True ist
statement1
statement2
else:
# Code, der ausgeführt wird, wenn condition False ist
statement3
statement4Der else-Zweig stellt einen alternativen Pfad bereit. Genau einer der beiden Blöcke wird ausgeführt – niemals beide, niemals keiner.
Sehen wir uns ein praktisches Beispiel an:
# 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:
# 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.")# 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:
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
block4Wichtige Punkte zu if-elif-else-Ketten:
elifist kurz für „else if“: Es stellt zusätzliche Bedingungen bereit, die geprüft werden- Die Reihenfolge ist wichtig: Python prüft Bedingungen von oben nach unten
- Erster Treffer gewinnt: Sobald eine Bedingung
Trueist, wird ihr Block ausgeführt und der Rest übersprungen - Genau ein Block wird ausgeführt: Höchstens ein Block in der Kette läuft
elseist optional: Es fängt alle Fälle ab, die von den vorherigen Bedingungen nicht erfasst wurden
Sehen wir uns ein praktisches Beispiel an:
# 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: BVerfolgen wir, was passiert:
score >= 90prüfen: False (85 ist nicht >= 90), also diesen Block überspringenscore >= 80prüfen: True (85 >= 80), also diesen Block ausführen- Alle verbleibenden
elif- undelse-Blöcke werden übersprungen, da wir eine passende Bedingung gefunden haben
Wenn Sie 55 eingeben:
Unfortunately, you did not pass.
Your grade is: FAlle 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:
# 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: DDas 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:
# 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: B8.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:
# 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:
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_blockDie innere if-Anweisung wird nur ausgewertet, wenn die äußere Bedingung True ist. So entsteht eine Hierarchie von Entscheidungen.
Hier ein einfaches Beispiel:
# 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:
- Entscheidungen von vorherigen Entscheidungen abhängen: Sie müssen etwas erst prüfen, nachdem eine andere Bedingung erfüllt ist
- Sie Entscheidungsbäume (decision trees) erstellen: Jede Ebene schränkt die Möglichkeiten weiter ein
- Sie Voraussetzungen validieren: Zuerst grundsätzliche Anforderungen prüfen, bevor detaillierte Anforderungen überprüft werden
- Sie unnötige Prüfungen vermeiden wollen: Teure Operationen überspringen, wenn frühere Bedingungen fehlschlagen
Beispiel: Kreditwürdigkeit (Eligibility) für einen Kredit
# 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:
# 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:
# 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):
# 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:
# Anstatt verschachtelter ifs, die Bereiche prüfen
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
# ... und so weiter8.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
# 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 blockLösung: Rücken Sie den Block unter einer if-Anweisung immer ein:
# CORRECT
age = 20
if age >= 18:
print("You are an adult.") # Korrekt eingerücktProblem 2: Inkonsistente Einrückung
# INCORRECT - Mischen von Leerzeichen und Tabs oder inkonsistente Leerzeichen
if temperature > 30:
print("It's hot!")
print("Stay hydrated!") # Zusätzliche Leerzeichen – inkonsistente EinrückungLösung: Verwenden Sie eine konsistente Einrückung (4 Leerzeichen sind der Python-Standard):
# CORRECT
if temperature > 30:
print("It's hot!")
print("Stay hydrated!") # Gleiches EinrückungsniveauProblem 3: Falsche Einrückung bei Verschachtelung
# INCORRECT - Falsches Einrückungsniveau
if has_account:
print("Welcome!")
if password == "correct":
print("Login successful!") # Sollte weiter eingerückt seinLösung: Jede verschachtelte Ebene benötigt zusätzliche Einrückung:
# CORRECT
if has_account:
print("Welcome!")
if password == "correct":
print("Login successful!") # Korrekt eingerückt für verschachtelten Block8.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:
# INCORRECT - SyntaxError: missing colon
if age >= 18
print("Adult")Das erzeugt:
File "example.py", line 2
if age >= 18
^
SyntaxError: invalid syntaxLösung: Fügen Sie den Doppelpunkt immer ein:
# CORRECT
if age >= 18:
print("Adult")Dasselbe gilt für elif und else:
# 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
# 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:
# 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
# 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:
# 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:
# 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 blockLösung: Verwenden Sie die Anweisung pass als Platzhalter (im nächsten Abschnitt behandelt):
# 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.
if condition:
pass # Vorerst nichts tunDenken 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:
# 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 blockDie Verwendung von pass macht den Code syntaktisch gültig:
# 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:
# 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:
# 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:
if temperature > 30:
print("It's hot outside!")if-else-Anweisungen wählen zwischen zwei Alternativen:
if age >= 18:
print("Adult")
else:
print("Minor")if-elif-else-Ketten behandeln mehrere sich gegenseitig ausschließende Optionen:
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:
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,elifundelse - 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.