Bedingte Anweisungen in Python

PythonBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie den Ablauf Ihrer Python-Programme mithilfe von bedingten Anweisungen (conditional statements) steuern können. Wir beginnen mit dem Verständnis des Konzepts der sequenziellen Programmausführung und führen dann die bedingte Logik ein, die es Programmen ermöglicht, Entscheidungen zu treffen.

Sie werden ein- und zweiseitige Verzweigungslogik mithilfe von if- und if-else-Anweisungen implementieren und die mehrseitige Verzweigungslogik mit if-elif-else erkunden. Das Lab behandelt auch verschachtelte if-Anweisungen, die pass-Anweisung und führt die match-case-Anweisung ein, die in Python 3.10 und späteren Versionen verfügbar ist. Am Ende dieses Labs werden Sie in der Lage sein, Python-Code zu schreiben, der unterschiedliche Anweisungsblöcke basierend auf spezifischen Bedingungen ausführt.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 100% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Sequenziellen Ablauf verstehen und bedingte Logik einführen

In diesem Schritt werden wir das Konzept des sequenziellen Ablaufs (sequential flow) in der Programmierung untersuchen und die bedingte Logik (conditional logic) einführen, die es Programmen ermöglicht, Entscheidungen zu treffen.

Der sequenzielle Ablauf ist die grundlegendste Art der Programmausführung. Anweisungen werden nacheinander, von oben nach unten, ausgeführt.

Die Lab-Umgebung hat bereits eine Datei namens sequential.py für Sie im Verzeichnis ~/project erstellt. Suchen Sie diese Datei im Dateiexplorer der WebIDE im linken Bereich und öffnen Sie sie.

Fügen Sie den folgenden Code zu sequential.py hinzu:

print("First instruction")
print("Second instruction")
print("Third instruction")

Speichern Sie die Datei. Um das Skript auszuführen, öffnen Sie das integrierte Terminal in der WebIDE und führen Sie den folgenden Befehl aus:

python ~/project/sequential.py

Sie werden die Ausgabe in genau der Reihenfolge sehen, in der die print-Anweisungen im Skript erscheinen:

First instruction
Second instruction
Third instruction

Dies demonstriert den sequenziellen Ablauf. Programme müssen sich jedoch oft basierend auf bestimmten Bedingungen unterschiedlich verhalten. Hier kommt die bedingte Logik ins Spiel. Die fundamentalste bedingte Anweisung in Python ist die if-Anweisung, die einen Codeblock nur dann ausführt, wenn eine angegebene Bedingung wahr (true) ist.

Die grundlegende Syntax einer if-Anweisung lautet:

if condition:
    ## Code, der ausgeführt wird, wenn die Bedingung wahr ist
    ## Dieser Block muss eingerückt sein (indented)

Ersetzen Sie nun den Inhalt von sequential.py durch den folgenden Code, um eine if-Anweisung einzufügen:

x = 10

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Speichern Sie die Datei und führen Sie sie erneut aus:

python ~/project/sequential.py

Die Ausgabe wird sein:

Before the if statement
x is greater than 5
After the if statement

Die Bedingung x > 5 ist wahr, daher wird der eingerückte Codeblock innerhalb der if-Anweisung ausgeführt.

Sehen wir uns nun an, was passiert, wenn die Bedingung falsch (false) ist. Ändern Sie sequential.py, indem Sie den Wert von x auf 3 ändern:

x = 3

print("Before the if statement")

if x > 5:
    print("x is greater than 5")

print("After the if statement")

Speichern Sie die Datei und führen Sie sie aus:

python ~/project/sequential.py

Die Ausgabe wird sein:

Before the if statement
After the if statement

Dieses Mal ist die Bedingung x > 5 falsch, sodass der Codeblock innerhalb der if-Anweisung übersprungen wird. Dieses einfache Beispiel veranschaulicht, wie die if-Anweisung Entscheidungsfindung in unsere Programme einführt.

Implementierung von ein- und zweistufiger Verzweigungslogik mit if und if-else

In diesem Schritt konzentrieren wir uns auf die Implementierung von Ein- und Zwei-Zweig-Logik (single and dual branch logic) mithilfe der if- und if-else-Anweisungen.

Die if-Anweisung ermöglicht eine Ein-Zweig-Ausführung. Verwenden wir die Datei branching.py, die für Sie vorbereitet wurde. Öffnen Sie branching.py aus dem Dateiexplorer.

Fügen Sie den folgenden Code hinzu, um eine Ein-Zweig-if-Anweisung zu demonstrieren:

score = 85

if score >= 70:
    print("Congratulations! You passed.")

print("End of program.")

Speichern Sie die Datei und führen Sie sie im Terminal aus:

python ~/project/branching.py

Die Ausgabe wird sein:

Congratulations! You passed.
End of program.

Da score 85 ist, ist die Bedingung wahr, und die Glückwunschnachricht wird gedruckt.

Obwohl if nützlich ist, müssen wir oft einen anderen Codeblock ausführen, wenn die Bedingung falsch ist. Hier kommt die if-else-Anweisung ins Spiel, die eine Zwei-Zweig-Logik bereitstellt.

Die Syntax einer if-else-Anweisung lautet:

if condition:
    ## Code, der ausgeführt wird, wenn die Bedingung wahr ist
else:
    ## Code, der ausgeführt wird, wenn die Bedingung falsch ist

Modifizieren wir branching.py, um eine if-else-Anweisung zu verwenden. Ersetzen Sie den aktuellen Inhalt durch Folgendes:

score = 85

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Speichern und führen Sie das Skript aus. Bei score gleich 85 wird der if-Block ausgeführt:

Congratulations! You passed.
End of program.

Um nun den else-Block zu testen, ändern Sie den score in branching.py auf 65:

score = 65

if score >= 70:
    print("Congratulations! You passed.")
else:
    print("Keep trying. You can do better.")

print("End of program.")

Speichern Sie die Datei und führen Sie sie erneut aus:

python ~/project/branching.py

Die Ausgabe wird nun sein:

Keep trying. You can do better.
End of program.

Da score 65 ist, ist die if-Bedingung falsch, und der Code im else-Block wird ausgeführt. Die if-else-Anweisung ist unerlässlich für die Behandlung von zwei möglichen Ergebnissen.

Implementierung von mehrstufiger Verzweigungslogik mit if-elif-else

In diesem Schritt lernen wir, wie man Situationen mit mehr als zwei möglichen Ergebnissen mithilfe der if-elif-else-Anweisung handhabt, die eine Mehrzweig-Logik (multi-branch logic) bereitstellt.

Die if-elif-else-Struktur überprüft Bedingungen sequenziell. Wenn die if-Bedingung falsch ist, wird die erste elif-Bedingung (Kurzform für "else if") überprüft, und so weiter. Wenn keine Bedingungen wahr sind, wird der else-Block ausgeführt.

Die grundlegende Syntax lautet:

if condition1:
    ## Wird ausgeführt, wenn condition1 wahr ist
elif condition2:
    ## Wird ausgeführt, wenn condition1 falsch und condition2 wahr ist
else:
    ## Wird ausgeführt, wenn alle vorherigen Bedingungen falsch sind

Öffnen Sie die Datei multibranch.py in der WebIDE. Wir werden ein Skript schreiben, um eine Notenbewertung basierend auf einer numerischen Punktzahl zu ermitteln. Fügen Sie den folgenden Code hinzu:

score = 88

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Speichern Sie die Datei und führen Sie sie im Terminal aus:

python ~/project/multibranch.py

Die Ausgabe wird sein:

Grade: B
Grading complete.

Das Programm prüft score >= 90 (falsch), dann score >= 80 (wahr), gibt "Grade: B" aus und überspringt den Rest der Kette.

Testen wir nun den else-Block. Modifizieren Sie multibranch.py, um den Score auf 55 zu setzen:

score = 55

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Speichern und führen Sie das Skript aus:

python ~/project/multibranch.py

Die Ausgabe wird sein:

Grade: F
Grading complete.

Ändern Sie abschließend zur Vorbereitung auf die Überprüfung den Score in multibranch.py auf 75:

score = 75

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

print("Grading complete.")

Speichern Sie die Datei und führen Sie das Skript ein letztes Mal aus:

python ~/project/multibranch.py

Die Ausgabe wird sein:

Grade: C
Grading complete.

Die if-elif-else-Struktur ist leistungsstark für die Behandlung mehrerer unterschiedlicher Fälle. Denken Sie daran, dass nur der Codeblock für die erste wahre Bedingung ausgeführt wird.

Untersuchung von verschachtelten if-Anweisungen und der pass-Anweisung

In diesem Schritt untersuchen wir verschachtelte if-Anweisungen, bei denen eine if-Anweisung innerhalb einer anderen platziert wird, und lernen außerdem die pass-Anweisung kennen.

Verschachtelte if-Anweisungen sind nützlich, wenn Sie eine Bedingung überprüfen müssen und, falls diese wahr ist, eine weitere Unterbedingung überprüfen müssen.

Öffnen Sie die Datei nested_if.py in der WebIDE. Fügen Sie den folgenden Code hinzu, der die Wahlberechtigung basierend auf Alter und Staatsbürgerschaft überprüft.

age = 20
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are also a citizen.")
        print("You are eligible to vote.")
    else:
        print("You are not a citizen.")
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Speichern Sie die Datei und führen Sie sie aus:

python ~/project/nested_if.py

Die Ausgabe wird sein:

You are old enough to vote.
You are also a citizen.
You are eligible to vote.
Voting eligibility check complete.

Sowohl die äußere Bedingung (age >= 18) als auch die innere Bedingung (is_citizen) sind wahr.

Schauen wir uns nun die pass-Anweisung an. Die pass-Anweisung ist eine Nulloperation; es passiert nichts, wenn sie ausgeführt wird. Sie ist ein nützlicher Platzhalter, wenn syntaktisch eine Anweisung erforderlich ist, Sie den Code dafür aber noch nicht geschrieben haben.

Ersetzen Sie den Inhalt von nested_if.py durch dieses Beispiel, das pass verwendet:

age = 18

if age >= 18:
    pass ## Placeholder for future code
else:
    print("You are not old enough to vote.")

print("Check complete.")

Speichern und führen Sie das Skript aus:

python ~/project/nested_if.py

Die Ausgabe wird sein:

Check complete.

Die if-Bedingung ist wahr, daher wird die pass-Anweisung ausgeführt (tut nichts), und der else-Block wird übersprungen.

Um die Überprüfung vorzubereiten, modifizieren Sie abschließend nested_if.py, um die ursprüngliche Logik zu verwenden, jedoch mit einem Alter, das den ersten Check nicht besteht.

age = 16
is_citizen = True

if age >= 18:
    print("You are old enough to vote.")
    if is_citizen:
        print("You are eligible to vote.")
    else:
        print("You are not eligible to vote.")
else:
    print("You are not old enough to vote.")
    print("You are not eligible to vote.")

print("Voting eligibility check complete.")

Speichern und führen Sie das Skript aus:

python ~/project/nested_if.py

Die Ausgabe wird sein:

You are not old enough to vote.
You are not eligible to vote.
Voting eligibility check complete.

Hier ist die äußere if-Bedingung (age >= 18) falsch, sodass der äußere else-Block ausgeführt wird und die innere if-else-Struktur vollständig übersprungen wird.

Einführung der match-case Anweisung (Python 3.10+)

In diesem Schritt untersuchen wir die match-case-Anweisung, ein Feature, das in Python 3.10 für strukturelles Pattern Matching (strukturelle Mustererkennung) eingeführt wurde. Sie bietet eine lesbare Alternative zu if-elif-else-Ketten für bestimmte Szenarien.

Die match-case-Anweisung vergleicht einen Wert mit einer Reihe von Mustern und führt den Codeblock für das erste übereinstimmende Muster aus.

Die grundlegende Syntax lautet:

match value:
    case pattern1:
        ## Code für pattern1
    case pattern2:
        ## Code für pattern2
    case _:
        ## Code für keine Übereinstimmung (Wildcard)

Öffnen Sie die Datei match_case.py in der WebIDE. Fügen Sie den folgenden Code hinzu, um den Wochentag basierend auf einer Zahl auszugeben.

day_number = 3

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Speichern Sie die Datei und führen Sie sie aus. Der python-Befehl in dieser Umgebung verwendet standardmäßig eine kompatible Version.

python ~/project/match_case.py

Die Ausgabe wird sein:

Wednesday
Day check complete.

Der Wert 3 stimmt mit case 3: überein, daher wird "Wednesday" ausgegeben.

Testen wir nun den Wildcard-Fall. Modifizieren Sie match_case.py, um eine ungültige Zahl zu verwenden:

day_number = 10

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Speichern und führen Sie das Skript aus:

python ~/project/match_case.py

Die Ausgabe wird sein:

Invalid day number
Day check complete.

Da 10 mit keinem spezifischen Fall übereinstimmt, wird die Wildcard case _: abgeglichen.

Um die Überprüfung vorzubereiten, ändern Sie abschließend day_number in match_case.py auf 6:

day_number = 6

match day_number:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
    case _:
        print("Invalid day number")

print("Day check complete.")

Speichern und führen Sie das Skript ein letztes Mal aus:

python ~/project/match_case.py

Die Ausgabe wird sein:

Saturday
Day check complete.

Die match-case-Anweisung kann eine sauberere Methode sein, um mehrere spezifische Werte im Vergleich zu einer langen if-elif-else-Kette zu behandeln.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Ablauf Ihrer Python-Programme steuern können. Sie begannen mit dem sequenziellen Programmablauf und gingen dann zur bedingten Logik über. Sie implementierten Ein-Zweig-Logik mit if, Zwei-Zweig-Logik mit if-else und Mehr-Zweig-Logik mit if-elif-else. Sie haben auch untersucht, wie man komplexere Entscheidungsstrukturen mit verschachtelten if-Anweisungen erstellt und wie man die pass-Anweisung als Code-Platzhalter verwendet. Schließlich wurden Sie in die match-case-Anweisung als moderne Alternative für musterbasierte Verzweigungen eingeführt. Sie sind nun in der Lage, Python-Programme zu schreiben, die Entscheidungen treffen und unterschiedliche Code-Pfade basierend auf spezifischen Bedingungen ausführen können.