Python Kontrollfluss
Python Kontrollfluss
Der Kontrollfluss ist die Reihenfolge, in der einzelne Anweisungen, Befehle oder Funktionsaufrufe ausgeführt oder ausgewertet werden. Der Kontrollfluss eines Python-Programms wird durch bedingte Anweisungen, Schleifen und Funktionsaufrufe gesteuert.
Vergleichsoperatoren
| Operator | Bedeutung |
|---|---|
== | Gleich |
!= | Ungleich |
< | Kleiner als |
> | Größer als |
<= | Kleiner oder gleich |
>= | Größer oder gleich |
Diese Operatoren ergeben je nach den gegebenen Werten True oder False.
Beispiele:
42 == 42
True
40 == 42
False
'hello' == 'hello'
True
'hello' == 'Hello'
False
'dog' != 'cat'
True
42 == 42.0
True
42 == '42'
False
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
'hello' == 'Hello'?TrueFalseNoneBoolesche Operatoren
Es gibt drei Boolesche Operatoren: and, or und not. In der Reihenfolge der Präzedenz, von höchster zu niedrigster, sind dies not, and und or.
Die Wahrheitstabelle des and-Operators:
| Ausdruck | Ergibt |
|---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
Die Wahrheitstabelle des or-Operators:
| Ausdruck | Ergibt |
|---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
Die Wahrheitstabelle des not-Operators:
| Ausdruck | Ergibt |
|---|---|
not True | False |
not False | True |
Vermischung von Operatoren
Sie können Boolesche und Vergleichsoperatoren mischen:
(4 < 5) and (5 < 6)
True
(4 < 5) and (9 < 6)
False
(1 == 2) or (2 == 2)
True
Sie können auch mehrere Boolesche Operatoren in einem Ausdruck zusammen mit den Vergleichsoperatoren verwenden:
2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True
# Im folgenden Ausdruck wird zuerst 3 < 4 and 5 > 5 ausgewertet, was zu False führt.
# Dann gibt 5 > 4 True zurück, sodass das Ergebnis nach True or False True ist.
5 > 4 or 3 < 4 and 5 > 5
True
# Nun wird der Ausdruck in Klammern zuerst ausgewertet, sodass True and False zu False führt.
(5 > 4 or 3 < 4) and 5 > 5
False
if Anweisungen
Die if-Anweisung wertet einen Ausdruck aus, und wenn dieser Ausdruck True ist, führt sie den folgenden eingerückten Code aus:
# if Anweisung: Codeblock ausführen, wenn Bedingung True ist
name = 'Debora'
if name == 'Debora': # Prüfen, ob name gleich 'Debora' ist
print('Hi, Debora') # Diese Zeile wird ausgeführt, wenn die Bedingung True ist
Hi, Debora
if name != 'George':
print('You are not George')
You are not George
Die else-Anweisung wird nur ausgeführt, wenn die Auswertung des if und aller elif-Ausdrücke False ist:
# if-else: unterschiedlichen Code basierend auf der Bedingung ausführen
name = 'Debora'
if name == 'George':
print('Hi, George.')
else: # Wird ausgeführt, wenn die if-Bedingung False ist
print('You are not George')
You are not George
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
else-Block in einer if-else-Anweisung ausgeführt?if-Bedingung (und alle elif-Bedingungen, falls vorhanden) False sindif-Bedingung True istErst nachdem der Ausdruck der if-Anweisung False ist, wird die elif-Anweisung ausgewertet und ausgeführt:
# if-elif: mehrere Bedingungen nacheinander prüfen
name = 'George'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George': # Nur geprüft, wenn die vorherige Bedingung False ist
print('Hi George!')
Hi George!
Die Teile elif und else sind optional.
name = 'Antony'
if name == 'Debora':
print('Hi Debora!')
elif name == 'George':
print('Hi George!')
else:
print('Who are you?')
Who are you?
Ternärer Bedingungsoperator
Viele Programmiersprachen verfügen über einen ternären Operator, der einen bedingten Ausdruck definiert. Die häufigste Verwendung ist die Erstellung einer knappen, einfachen bedingten Zuweisungsanweisung. Mit anderen Worten, er bietet Code in einer Zeile, um den ersten Ausdruck auszuwerten, wenn die Bedingung wahr ist, und andernfalls den zweiten Ausdruck auszuwerten.
<Ausdruck1> if <Bedingung> else <Ausdruck2>
Beispiel:
age = 15
# diese if-Anweisung:
if age < 18:
print('kid')
else:
print('adult')
kid
# Ternärer Operator: bedingter Ausdruck in einer Zeile
# Syntax: Wert_wenn_wahr if Bedingung else Wert_wenn_falsch
print('kid' if age < 18 else 'adult')
kid
Ternäre Operatoren können verkettet werden:
age = 15
# dieser ternäre Operator:
print('kid' if age < 13 else 'teen' if age < 18 else 'adult')
teen
# entspricht dieser if-Anweisung:
if age < 13:
print('kid')
else:
if age < 18:
print('teen')
else:
print('adult')
teen
Switch-Case-Anweisung
Switch-Case-Anweisungen
In Programmiersprachen ist eine Switch-Anweisung eine Art von Auswahlsteuerungsmechanismus, der verwendet wird, um den Wert einer Variablen oder eines Ausdrucks durch Suche und Abbildung den Programmablauf zu ändern.
Die Switch-Case-Anweisungen oder Strukturelle Mustererkennung (Structural Pattern Matching) wurden erstmals 2020 über PEP 622 eingeführt und dann offiziell mit Python 3.10 im September 2022 veröffentlicht.
Offizielles Tutorial
Die PEP 636 bietet ein offizielles Tutorial für die Python-Mustererkennung oder Switch-Case-Anweisungen.
Abgleich einzelner Werte
response_code = 201
match response_code:
case 200:
print("OK")
case 201:
print("Created")
case 300:
print("Multiple Choices")
case 307:
print("Temporary Redirect")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
case 502:
print("502 Bad Gateway")
Created
Abgleich mit dem or-Muster
In diesem Beispiel erlaubt das Pipe-Zeichen (| oder or), dass Python dieselbe Antwort für zwei oder mehr Fälle zurückgibt.
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 300 | 307:
print("Redirect")
case 400 | 401:
print("Bad Request")
case 500 | 502:
print("Internal Server Error")
Internal Server Error
Abgleich nach der Länge eines Iterierbaren
today_responses = [200, 300, 404, 500]
match today_responses:
case [a]:
print(f"One response today: {a}")
case [a, b]:
print(f"Two responses today: {a} and {b}")
case [a, b, *rest]:
print(f"All responses: {a}, {b}, {rest}")
All responses: 200, 300, [404, 500]
Standardwert
Das Unterstrichsymbol (_) wird verwendet, um einen Standardfall zu definieren:
response_code = 800
match response_code:
case 200 | 201:
print("OK")
case 300 | 307:
print("Redirect")
case 400 | 401:
print("Bad Request")
case 500 | 502:
print("Internal Server Error")
case _:
print("Invalid Code")
Invalid Code
Abgleich eingebauter Klassen
response_code = "300"
match response_code:
case int():
print('Code is a number')
case str():
print('Code is a string')
case _:
print('Code is neither a string nor a number')
Code is a string
Absichern von Match-Case-Anweisungen (Guarding)
response_code = 300
match response_code:
case int() if response_code > 99 and response_code < 500:
print('Code is a valid number')
case _:
print('Code is an invalid number')
Code is a valid number
while Schleifenanweisungen
Die while-Anweisung wird für wiederholte Ausführung verwendet, solange ein Ausdruck True ist:
# while Schleife: Code wiederholen, solange Bedingung True ist
spam = 0
while spam < 5: # Fortfahren, solange spam kleiner als 5 ist
print('Hello, world.')
spam = spam + 1 # Zähler erhöhen, um eine Endlosschleife zu vermeiden
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
while-Schleife?True istbreak Anweisungen
Wenn die Ausführung auf eine break-Anweisung trifft, wird die while-Schleifenklausel sofort verlassen:
# break Anweisung: Schleife sofort beenden, wenn sie angetroffen wird
while True: # Endlosschleife
name = input('Please type your name: ')
if name == 'your name':
break # Schleife sofort verlassen
print('Thank you!')
Please type your name: your name
Thank you!
continue Anweisungen
Wenn die Programmausführung auf eine continue-Anweisung trifft, springt die Programmausführung sofort zurück zum Anfang der Schleife.
# continue Anweisung: Rest der Schleifeniteration überspringen und nächste Iteration starten
while True:
name = input('Who are you? ')
if name != 'Joe':
continue # Zur nächsten Iteration springen, nicht nach dem Passwort fragen
password = input('Password? (It is a fish.): ')
if password == 'swordfish':
break # Schleife verlassen, wenn das Passwort korrekt ist
print('Access granted.')
Who are you? Charles
Who are you? Debora
Who are you? Joe
Password? (It is a fish.): swordfish
Access granted.
For Schleife
Die for-Schleife iteriert über eine list, tuple, dictionary, set oder string:
# for Schleife: über jedes Element in einer Sequenz iterieren
pets = ['Bella', 'Milo', 'Loki']
for pet in pets: # Durch jedes Haustier in der Liste iterieren
print(pet) # Jeden Haustiernamen ausgeben
Bella
Milo
Loki
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
for-Schleife?Die range() Funktion
Die range()-Funktion gibt eine Zahlenfolge zurück. Sie beginnt bei 0, wird um 1 erhöht und stoppt vor einer angegebenen Zahl:
for i in range(5):
print(f'Will stop at 5! or 4? ({i})')
Will stop at 5! or 4? (0)
Will stop at 5! or 4? (1)
Will stop at 5! or 4? (2)
Will stop at 5! or 4? (3)
Will stop at 5! or 4? (4)
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
range(5)?Die range()-Funktion kann auch ihre 3 Standardargumente modifizieren. Die ersten beiden sind die start- und stop-Werte, und der dritte ist das step-Argument. Der Schritt ist die Menge, um die die Variable nach jeder Iteration erhöht wird.
# range(start, stop, step)
for i in range(0, 10, 2):
print(i)
0
2
4
6
8
Sie können sogar eine negative Zahl für das step-Argument verwenden, damit die for-Schleife rückwärts zählt statt vorwärts.
for i in range(5, -1, -1):
print(i)
5
4
3
2
1
0
For else Anweisung
Dies ermöglicht die Angabe einer Anweisung, die ausgeführt wird, falls die gesamte Schleife durchlaufen wurde. Nur nützlich, wenn eine break-Bedingung in der Schleife auftreten kann:
for i in [1, 2, 3, 4, 5]:
if i == 3:
break
else:
print("only executed when no item is equal to 3")
Programm beenden mit sys.exit()
Die exit()-Funktion ermöglicht das Beenden von Python.
import sys
while True:
feedback = input('Type exit to exit: ')
if feedback == 'exit':
print(f'You typed {feedback}.')
sys.exit()
Type exit to exit: open
Type exit to exit: close
Type exit to exit: exit
You typed exit.