Python3 Bedingte Steuerung

Python-Bedingungsanweisungen bestimmen anhand des Ausführungsergebnisses (True oder False) einer oder mehrerer Anweisungen, welcher Codeblock ausgeführt wird.

Der Ausführungsprozess von Bedingungsanweisungen lässt sich kurz durch das folgende Diagramm verstehen:

Ablauf der Codeausführung:

Schlüsselwörter zur Bedingungsprüfung

Schlüsselwort / Funktion Beschreibung Beispiel
if Bedingte Prüfanweisung; führt den Codeblock aus, wenn die Bedingung True ist if x > 0:
elif Verzweigung zur Mehrfachbedingungsprüfung (else if) elif x == 0:
else Wird ausgeführt, wenn keine der Bedingungen erfüllt ist else:
pass Leere Anweisung, dient als Platzhalter, um die vollständige Syntax sicherzustellen if x > 0: pass
match Strukturierte Mustererkennung (Python 3.10+, ähnlich zu switch) match x: case 1: ...

if-Anweisung

Die allgemeine Form einer if-Anweisung in Python lautet wie folgt:

if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3
  • Wenn "condition_1" True ist, wird der Anweisungsblock "statement_block_1" ausgeführt
  • Wenn "condition_1" False ist, wird "condition_2" ausgewertet
  • Wenn "condition_2" True ist, wird der Anweisungsblock "statement_block_2" ausgeführt
  • Wenn "condition_2" False ist, wird der Anweisungsblock "statement_block_3" ausgeführt

In Python wirdelifanstelle vonelse ifverwendet, daher lauten die Schlüsselwörter der if-Anweisung:if – elif – else。

Hinweis:

  • 1. Nach jeder Bedingung muss ein Doppelpunkt verwendet werden:, der anzeigt, dass das Folgende der Anweisungsblock ist, der ausgeführt wird, wenn die Bedingung erfüllt ist.
  • 2. Verwende Einrückung, um Anweisungsblöcke zu unterteilen. Anweisungen mit derselben Anzahl an Einrückungen bilden zusammen einen Anweisungsblock.
  • 3. In Python gibt es keineswitch...case-Anweisung, aber in Version 3.10 wurde diematch...case-Anweisung hinzugefügt, mit ähnlicher Funktionalität. Siehe unten für Details.

GIF-Demo:

Beispiel

Das Folgende ist ein einfaches if-Beispiel:

Beispiel

#!/usr/bin/python3 var1 = 100 if var1: print ("1 - wenn die Bedingung des Ausdrucks wahr ist") print (var1) var2 = 0 if var2: print ("2 - wenn die Bedingung des Ausdrucks wahr ist") print (var2) print ("Auf Wiedersehen!")

Nach Ausführung des obigen Codes ist die Ausgabe:

1 - if 表达式条件为 true
100
Good bye!

Aus dem Ergebnis ist ersichtlich, dass die Anweisung innerhalb des entsprechenden if nicht ausgeführt wurde, weil die Variable var2 0 ist.

Das folgende Beispiel zeigt die Berechnung und Einschätzung des Alters eines Hundes:

Beispiel

#!/usr/bin/python3 age = int(input("Bitte geben Sie das Alter Ihres Hundes ein:")) print("") if age <= 0: print("Das ist nicht dein Ernst!") elif age == 1: print("Entspricht einem 14-jährigen Menschen.") elif age == 2: print("Entspricht einem 22-jährigen Menschen.") elif age > 2: human = 22 + (age -2)*5 print("Entsprechendes menschliches Alter:", human) ### Beenden-Hinweis input("Zum Beenden die Eingabetaste drücken")

Speichern Sie das obige Skript in der Datei dog.py und führen Sie das Skript aus:

$ python3 dog.py 
请输入你家狗狗的年龄: 1

相当于 14 岁的人。
点击 enter 键退出

Im Folgenden sind häufig verwendete Operatoren in if aufgeführt:

Operator Beschreibung
< Kleiner als
<= Kleiner als oder gleich
> Größer als
>= Größer als oder gleich
== Gleich, vergleicht, ob zwei Werte gleich sind
!= Ungleich

Beispiel

#!/usr/bin/python3 # Das Programm demonstriert den ==-Operator # Verwendung von Zahlen print(5 == 6) # Verwendung von Variablen x = 5 y = 8 print(x == y)

Die Ausgabe des obigen Beispiels:

False
False

Die Datei high_low.py demonstriert numerische Vergleichsoperationen:

Beispiel

#!/usr/bin/python3 # Dieses Beispiel demonstriert ein Zahlenratespiel number = 7 guess = -1 print("Zahlenratespiel!") while guess != number: guess = int(input("Bitte geben Sie die Zahl ein, die Sie geraten haben:")) if guess == number: print("Herzlichen Glückwunsch, Sie haben richtig geraten!") elif guess < number: print("Die geratene Zahl ist zu klein...") elif guess > number: print("Die geratene Zahl ist zu groß...")

Nach Ausführung des obigen Skripts sieht die Beispielausgabe wie folgt aus:

$ python3 high_low.py 
数字猜谜游戏!
请输入你猜的数字:1
猜的数字小了...
请输入你猜的数字:9
猜的数字大了...
请输入你猜的数字:7
恭喜,你猜对了!

if-Verschachtelung

In verschachtelten if-Anweisungen kann eine if...elif...else-Struktur in einer anderen if...elif...else-Struktur platziert werden.

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

Beispiel

# !/usr/bin/python3 num=int(input("Geben Sie eine Zahl ein:")) if num%2==0: if num%3==0: print ("Die eingegebene Zahl ist sowohl durch 2 als auch durch 3 teilbar") else: print ("Die eingegebene Zahl ist durch 2, aber nicht durch 3 teilbar") else: if num%3==0: print ("Die eingegebene Zahl ist durch 3, aber nicht durch 2 teilbar") else: print ("Die von dir eingegebene Zahl ist weder durch 2 noch durch 3 teilbar")

Speichere das obige Programm in der Datei test_if.py. Nach der Ausführung lautet die Ausgabe:

$ python3 test.py 
输入一个数字:6
你输入的数字可以整除 2 和 3

match...case

Python 3.10 hat match...caseals bedingte Verzweigung hinzugefügt, sodass keine Reihe vonif-elsemehr zur Fallunterscheidung verwendet werden muss.

Das Objekt nach match wird nacheinander mit dem Inhalt nach case abgeglichen. Wenn der Abgleich erfolgreich ist, wird der passende Ausdruck ausgeführt; andernfalls wird er direkt übersprungen._Es kann alles abgleichen.

SVG: match...case-Ablaufdiagramm subject box match subject Down arrow case <pattern_1> ? Match action_1 No match case <pattern_2> ? Match action_2 No match case <pattern_3> ? Match action_3 No match case _ (wildcard) Must match wildcard

Das Syntaxformat lautet wie folgt:

match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

case _:Ähnlich wiedefault:in C und Java: Wenn andere Fälle nicht übereinstimmen, stimmt dieser überein, wodurch sichergestellt wird, dass ein Abgleich immer erfolgreich ist.

Beispiel

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Etwas stimmt nicht mit dem Internet"
 
print(http_error(400))
print(http_error(404))
print(http_error(418))
print(http_error(500))

Das Obige ist ein Beispiel, das HTTP-Statuscodes ausgibt. Die Ausgabeergebnisse für mehrere Statuscodes sind:

Bad request
Not found
I'm a teapot
Something's wrong with the internet

Ein Fall kann auch mehrere passende Bedingungen festlegen, getrennt durch|, zum Beispiel:

...
    case 401|403|404:
        return "Not allowed"
SVG: | Diagramm zur Übereinstimmung mit mehreren Bedingungen status 401 403 404 | symbol | | Three lines converge Result box "Not allowed"

Beispiel

def check_permission(status):
    match status:
        case 200:
            return "OK - Anfrage erfolgreich"
        case 301 | 302:
            return "Weiterleitung - Umleitung"
        case 401 | 403 | 404:
            return "Nicht erlaubt - keine Berechtigung oder nicht gefunden"
        case 500 | 502 | 503:
            return "Serverfehler - Serverfehler"
        case _:
            return "Unbekannter Status - unbekannter Statuscode"
 
for code in [200, 301, 403, 500, 418]:
    print(f"Statuscode {code}: {check_permission(code)}")

match...caseWeitere Informationen findest du unter:Python match-case-Anweisung

Weitere Erweiterungen