Python Kontrollstrukturen

6 Kernkonzepte
Die wichtigsten Kontrollstrukturen in Python: if / elif / else · for · while · break / continue / pass · match case · Comprehensions Kontrollstrukturen steuern den Programmablauf – sie entscheiden, welche Codeblöcke unter welchen Bedingungen ausgeführt werden und wie oft Schleifen durchlaufen werden.

if / elif / else – Bedingungen prüfen

if bedingung: ... elif: ... else: ...
if x > 0: print("Positiv") elif x == 0: print("Null") else: print("Negativ")

if prüft eine Bedingung und führt den entsprechenden Block aus. elif (else if) und else erweitern die Fallunterscheidung.

Vergleichsoperatoren

Operator Bedeutung
== Gleich
!= Ungleich
> Größer als
< Kleiner als
>= Größer oder gleich
<= Kleiner oder gleich
and Logisches UND
or Logisches ODER
not Logisches NICHT
Beispiele
age = 18
if age < 18:
print("Minderjährig")
elif age == 18:
print("Genau 18")
else:
print("Volljährig")
# Verschachtelte Bedingung:
if x > 0 and x < 10:
print("Zwischen 0 und 10")
Tipp: Python kennt Truthy- und Falsy-Werte: 0, None, [], {}, "" sind False, alles andere ist True.

for – Iteration über Sequenzen

for variable in iterable: ...
for i in range(5): print(i)

for durchläuft alle Elemente einer Sequenz (Liste, Tupel, String, range, etc.). Die Schleife wird für jedes Element einmal ausgeführt.

Häufige Verwendungen

Konstrukt Beschreibung
range(n) Zahlen von 0 bis n-1
range(start, stop) Zahlen von start bis stop-1
range(start, stop, step) Zahlen mit Schrittweite
enumerate(liste) Index und Wert gleichzeitig
zip(liste1, liste2) Mehrere Listen parallel durchlaufen
Beispiele
# Liste durchlaufen:
namen = ["Anna", "Ben", "Clara"]
for name in namen:
print(name)
# Mit Index (enumerate):
for idx, name in enumerate(namen):
print(f"{idx}: {name}")
# Zahlenbereich:
for i in range(2, 10, 2): # 2, 4, 6, 8
print(i)
# Dictionary durchlaufen:
d = {"a": 1, "b": 2}
for key, value in d.items():
print(f"{key}: {value}")
Tipp: range() erzeugt keine Liste, sondern einen Iterator – das spart Speicherplatz bei großen Zahlenbereichen.

while – Bedingungsgesteuerte Schleife

while bedingung: ...
x = 0 while x < 5: print(x) x += 1

while führt den Codeblock aus, solange die Bedingung True ist. Die Bedingung wird vor jedem Durchlauf geprüft – bei False wird die Schleife beendet.

Beispiele
# Zähler-Schleife:
count = 0
while count < 3:
print(count)
count += 1
# Endlosschleife mit break:
while True:
eingabe = input("Beenden? (j/n): ")
if eingabe == "j":
break
# Benutzereingabe validieren:
zahl = None
while zahl is None:
try:
zahl = int(input("Zahl: "))
except ValueError:
print("Ungültige Eingabe")
⚠️ Achtung: Vergessen Sie nicht, die Bedingung in der Schleife zu verändern – sonst entsteht eine Endlosschleife! Mit Ctrl+C können Sie diese abbrechen.

break / continue / pass – Schleifensteuerung

break · continue · pass
break # Beendet die Schleife continue # Überspringt den Rest des Durchlaufs pass # Platzhalter (keine Aktion)

break beendet die aktuelle Schleife sofort. continue springt zum nächsten Schleifendurchlauf. pass ist ein Platzhalter, der nichts tut.

Beispiele
# break: Suche abbrechen
zahlen = [1, 3, 5, 7, 9]
for z in zahlen:
if z == 5:
break
print(z) # 1, 3
# continue: gerade Zahlen überspringen
for i in range(5):
if i % 2 == 0:
continue
print(i) # 1, 3
# pass: Platzhalter für noch nicht implementierten Code
if x > 0:
pass # TODO: später implementieren
# for-else: wird ausgeführt, wenn kein break erfolgte
for i in range(3):
if i == 5:
break
print(i)
else:
print("Kein break") # Wird ausgegeben
Tipp: Die for-else-Konstruktion ist nützlich, um zu prüfen, ob eine Schleife vollständig durchlaufen wurde (ohne break).

match case – Pattern Matching (Python 3.10+)

match wert: case muster: ...
match x: case 0: print("Null") case 1: print("Eins") case _: print("Anderes")

match case (ab Python 3.10) ermöglicht strukturelles Pattern Matching – ähnlich wie switch in anderen Sprachen, aber deutlich mächtiger.

Beispiele
# Einfacher Wert:
match code:
case 200:
print("OK")
case 404:
print("Nicht gefunden")
case _:
print("Unbekannt")
# Tupel/Liste:
match punkt:
case (0, 0):
print("Ursprung")
case (x, 0):
print(f"X-Achse bei {x}")
case (0, y):
print(f"Y-Achse bei {y}")
case _:
print("Anderer Punkt")
Tipp: match case ist besonders nützlich für komplexe Datenstrukturen – es kann Tupel, Listen, Dictionaries und sogar benutzerdefinierte Klassen matchen.

Comprehensions – Kompakte Schleifen

Liste · Dict · Set · Generator
[x**2 for x in range(5)] # [0, 1, 4, 9, 16] {x: x**2 for x in range(3)} # {0: 0, 1: 1, 2: 4} {x for x in "hallo"} # {'h', 'a', 'l', 'o'} (x for x in range(3)) # Generator (nicht Liste)

Comprehensions ermöglichen die kompakte Erstellung von Listen, Dictionaries, Sets und Generatoren – oft lesbarer und schneller als manuelle Schleifen.

Beispiele
# Liste der Quadratzahlen:
quadrate = [x**2 for x in range(5)]
# Mit Bedingung (nur gerade Zahlen):
gerade = [x for x in range(10) if x % 2 == 0]
# Dictionary Comprehension:
quadrat_dict = {x: x**2 for x in range(3)}
# Set Comprehension:
unique_chars = {c for c in "mississippi"}
# Generator (speichersparend):
gen = (x for x in range(1000))
# Verschachtelte Comprehension:
paare = [(a, b) for a in range(3) for b in range(2)]
Ausgaben:
quadrate = [0, 1, 4, 9, 16]
gerade = [0, 2, 4, 6, 8]
quadrat_dict = {0: 0, 1: 1, 2: 4}
unique_chars = {'m', 'i', 's', 'p'}
Tipp: Comprehensions sind oft schneller als manuelle for-Schleifen mit append(). Generatoren verbrauchen weniger Speicher, da sie Werte faul (lazy) erzeugen.

Python Kontrollstrukturen im Überblick

if Bedingte Ausführung
if, elif, else
for Iteration über Sequenzen
Liste, range, String
while Bedingungsgesteuerte Schleife
Solange Bedingung erfüllt
break Schleife beenden
continue, pass
match Pattern Matching
Seit Python 3.10
[...] Comprehensions
Liste, Dict, Set, Generator

Quick Summary

if
Bedingungen prüfen
for
Iteration
while
Schleife
break
Schleife beenden
match
Pattern Matching
[...]
Comprehensions
if x > 0: print("Positiv") · for i in range(5): print(i) · while x < 10: x += 1