Kontrollstrukturen

Kontrollstrukturen: alles, was zwischen "tu dies" und "tu das" entscheidet.

Grundlagen 12 min Einsteiger 26. April 2026

Du kannst Zahlen, Text und Wahr-oder-Falsch-Werte in Variablen speichern — aber bisher läuft dein Programm stur von oben nach unten, eine Zeile nach der anderen. Wie eine Einkaufsliste, die man laut vorliest.

Was, wenn das Programm Teenager anders begrüßen soll als Erwachsene? Was, wenn es tausend Datenpunkte verarbeiten soll, ohne dass du tausend Zeilen schreibst? Kontrollstrukturen lösen beide Probleme: Verzweigungen lassen Code Entscheidungen treffen, und Schleifen lassen Code Aktionen wiederholen. Am Ende dieses Artikels verstehst du die drei grundlegenden Muster — if/elif/else, for und while — und weißt genau, wann du welches einsetzt.

Verzweigungen — Entscheidungen mit If/Elif/Else

Was ist eine Verzweigung?

AnalogieDefinition
Stell dir einen Türsteher am Clubeingang vor. Er prüft dein Alter nach festen Regeln von oben nach unten: Mindestens 18? Normaler Einlass. Mindestens 16? Nur alkoholfreie Getränke. Sonst? Du bleibst draußen. Sobald eine Regel passt, sind alle weiteren egal.

Die Analogie bricht an einer Stelle: Ein Türsteher nutzt Ermessensspielraum ("sieht älter aus", "kein Ausweis dabei"). Ein Programm kennt nur True oder False — die Bedingung alter >= 18 ist entweder erfüllt oder nicht, Graubereiche gibt es nicht.

== gleich
!= ungleich
< kleiner als
> größer als
<= kleiner-gleich
>= größer-gleich
and beide müssen True sein
or mindestens eins muss True sein
not kehrt den Wahrheitswert um

Ausführungsspur: alter = 17

1
Eingabe lesen: alter = 17
2
Prüfe alter >= 18 → False → überspringe Block
3
Prüfe alter >= 16 → True → führe Block aus: "Nur alkoholfreie Getränke"
4
else wird komplett übersprungen — genau ein Pfad wurde genommen

Beachte: Obwohl alter = 17 auch die else-Bedingung erfüllen würde, wird der else-Block nie erreicht, weil bereits elif zugetroffen hat. Genau ein Pfad wird immer genommen.

Code-Beispiel: Altersüberprüfung

alter = int(input("Wie alt bist du? "))

if alter >= 18:
    print("Willkommen!")
elif alter >= 16:
    print("Nur alkoholfreie Getränke.")
else:
    print("Leider zu jung.")

Häufiger Irrtum: "if prüft alle Bedingungen"

Falsch! In einer if/elif/else-Kette wird nur bis zur ersten wahren Bedingung geprüft. Alle nachfolgenden Zweige werden komplett übersprungen, selbst wenn ihre Bedingungen auch True wären.

Achtung bei der Reihenfolge: Wenn du alter >= 16 vor alter >= 18 schreibst, landen auch 20-Jährige im "alkoholfrei"-Block, weil >= 16 für sie ebenfalls True ist und zuerst geprüft wird.

For-Schleifen — Wiederholen mit bekannter Anzahl

Was ist eine For-Schleife?

AnalogieDefinition
Ein Postbote mit einer Liste von 10 Adressen weiß vor der Tour genau, wie viele Stopps er hat, und geht sie der Reihe nach ab. Genauso kennt eine for-Schleife die Anzahl der Durchläufe, bevor sie startet.

Die Analogie bricht dort, wo der Postbote spontan ein Haus überspringt. Eine for-Schleife durchläuft standardmäßig jedes Element — es sei denn, du verwendest break zum Abbruch oder continue zum Überspringen des aktuellen Elements.

Code-Beispiele: Listen und range()

fruechte = ["Apfel", "Banane", "Kirsche"]
for frucht in fruechte:
    print(frucht)
# Ausgabe: Apfel, Banane, Kirsche

range(n) erzeugt die Zahlen 0 bis n-1 — genau n Durchläufe, aber der Endwert selbst wird nicht erreicht:

for i in range(5):
    print(i)
# Ausgabe: 0, 1, 2, 3, 4  (nicht 1 bis 5!)

Die erweiterte Form range(start, stop, step) gibt volle Kontrolle über Start, Ende und Schrittweite:

for i in range(1, 10, 2):
    print(i)
# Ausgabe: 1, 3, 5, 7, 9  (ungerade Zahlen)

Häufiger Irrtum: "range(5) ergibt 1 bis 5"

range(5) beginnt bei 0 und endet vor 5 — erzeugt also 0, 1, 2, 3, 4. Dieses halboffene Intervall ist der häufigste Anfängerfehler bei for-Schleifen. Es passt aber perfekt zu nullbasierten Indizes: range(len(meine_liste)) liefert genau alle gültigen Positionen.

While-Schleifen — Wiederholen bis sich etwas ändert

Was ist eine While-Schleife?

AnalogieDefinition
Stell dir eine Passwortabfrage vor: "Gib dein Passwort ein" — immer wieder, bis der Nutzer das richtige tippt. Du weißt vorher nicht, ob es beim 1., 5. oder 50. Versuch klappt. Die Schleife wiederholt sich einfach, bis die Bedingung erfüllt ist.

Im echten Leben würdest du irgendwann aufgeben, wenn jemand nie das richtige Passwort trifft. Eine while-Schleife gibt nicht von selbst auf — sie läuft bis die Bedingung False wird oder du per break abbrichst, egal wie lange das dauert.

Code-Beispiele: Zähler und while True

zaehler = 0
while zaehler < 5:
    print(f"Durchlauf {zaehler}")
    zaehler += 1
# Ausgabe: Durchlauf 0, 1, 2, 3, 4

zaehler startet bei 0 und wird bei jedem Durchlauf um 1 erhöht. Sobald zaehler den Wert 5 erreicht, ist die Bedingung zaehler < 5 nicht mehr True, und die Schleife endet. Ohne zaehler += 1 würde zaehler dauerhaft 0 bleiben — eine Endlosschleife.

while True:
    eingabe = input("Tippe 'exit' zum Beenden: ")
    if eingabe == "exit":
        break
print("Programm beendet.")

while True erzeugt absichtlich eine Endlosschleife. Das break-Statement beendet sie kontrolliert, sobald die gewünschte Bedingung eintritt. Dieses Muster ist in Servern, Spielen und interaktiven Programmen ein legitimes Werkzeug — kein Bug.

Warnung: Endlosschleifen

Wenn sich die Variable in der Bedingung nie ändert oder die Bedingung immer True bleibt, läuft die Schleife endlos und blockiert dein Programm.

Notausgang: Mit Strg+C kannst du ein hängendes Programm im Terminal abbrechen.

Häufiger Irrtum: "Endlosschleifen sind immer Fehler"

Viele reale Programme laufen bewusst in einer while-True-Schleife: Server warten auf Anfragen, Spiele aktualisieren den Bildschirm, und GUIs reagieren auf Ereignisse. Der Unterschied zwischen Bug und Feature ist, ob die Schleife einen kontrollierten Ausstiegspunkt (break bei definiertem Ereignis) hat.

For vs. While — Das richtige Werkzeug wählen

for-Schleife

Bekannte Anzahl an Durchläufen. Iteriert über Sammlungen oder range(). Typisch: Listen durchgehen, feste Wiederholungen.

while-Schleife

Unbekannte Anzahl an Durchläufen. Prüft Bedingung vor jedem Durchlauf. Typisch: Nutzereingaben, Warten auf Ereignisse.

Faustregel: "Weiß ich vorher, wie oft?" → for. "Weiß ich, wann aufhören?" → while.

Python verwendet 4 Leerzeichen pro Einrückungsebene statt geschweifter Klammern. Alle Zeilen eines Blocks müssen exakt gleich weit eingerückt sein. Ein falsch eingerücktes print() kann dazu führen, dass es immer ausgeführt wird statt nur im if-Block — ohne jede Fehlermeldung.

Das Mischen von Tabs und Leerzeichen verursacht in Python 3 einen TabError (eine spezielle Form des IndentationError). Python passt hier also auf dich auf — der Fehler wird sofort gemeldet, nicht still ignoriert. Styleguides empfehlen konsequent 4 Leerzeichen. Die meisten Editoren lassen sich so konfigurieren, dass die Tab-Taste automatisch 4 Leerzeichen einfügt.

Entscheidungshilfe: Wenn du eine feste Menge von Elementen abarbeiten willst (eine Liste, einen Bereich von Zahlen), nimm for. Wenn du auf ein Ereignis wartest oder nicht weißt, wie viele Durchläufe nötig sind (Nutzereingabe, Datenstrom), nimm while.

Vorschau: In späteren Artikeln wirst du verschachtelte Schleifen kennenlernen — eine Schleife in einer Schleife (z. B. Zeilen mal Spalten in einem Raster). Dieses Konzept wird bei zweidimensionalen Datenstrukturen wichtig.

Interaktiv: Welche Kontrollstruktur brauche ich?

Beantworte die Fragen im Entscheidungsbaum, um die passende Kontrollstruktur für dein Problem zu finden. Beachte, wie die Fragen genau die Kriterien aus den vorherigen Abschnitten aufgreifen: Bekannte Anzahl? Bedingung? Mehrere Fälle?

?

Was soll dein Code tun?

Die wichtigsten Erkenntnisse

  1. if/elif/else prüft Bedingungen von oben nach unten und führt genau einen Zweig aus — den ersten, der True ist. Die Reihenfolge ist entscheidend.
  2. Eine for-Schleife durchläuft jedes Element einer Sequenz oder eines range(). Die Anzahl der Durchläufe steht vor dem Start fest.
  3. Eine while-Schleife wiederholt, solange ihre Bedingung True ist. Wenn nichts im Schleifenkörper die Bedingung jemals auf False setzt, läuft sie endlos.
  4. for = "Ich weiß, wie oft." while = "Ich weiß nicht wie oft, aber ich weiß, wann aufhören."
  5. Python nutzt Einrückung statt Klammern für Codeblöcke. Falsche Einrückung ändert, was dein Programm tut — oder bricht es.

Quiz: Kontrollstrukturen

Frage 1 / 4
Noch offen

Ein Kollege nutzt drei separate if-Abfragen statt einer if/elif/else-Kette für die gleichen Bedingungen. Was ist der entscheidende Unterschied?

Wählen Sie eine Antwort
Auflösung: 1) B · 2) B · 3) B · 4) B

Verständnischeck

  • Wenn in einer if/elif/else-Kette mehrere Bedingungen gleichzeitig True sein könnten — werden dann alle passenden Blöcke ausgeführt oder nur einer? Warum?
  • Warum erzeugt range(5) genau die Zahlen 0 bis 4? Erkläre, wie Start- und Endwert bei range(start, stop) behandelt werden und wie das mit nullbasierten Indizes zusammenhängt.
  • Was passiert in einer while-Schleife, wenn du die Variable in der Bedingung nie veränderst? Welche Rolle kann break dabei spielen?