Zum Hauptinhalt springen

Verschachtelte Bedingungen

Warum brauchen wir das?

Manchmal hängen Entscheidungen nacheinander zusammen:

  • Nur wenn du ein Ticket hast …
    • prüfe das Alter …
    • dann darfst du rein

Der zweite Check macht nur Sinn, wenn der erste schon True war.
Das kann man verschachteln: if in if – wie Türen hinter Türen.

Definition: Verschachtelung

Definition – verschachtelte Bedingung:
Eine verschachtelte Bedingung liegt vor, wenn ein if (mit Block)
innerhalb des Blocks eines anderen if steht.

Die Einrückung zeigt die Zugehörigkeit. Zwei Ebenen = zwei Einrückungsstufen.

Club mit zwei Checks

ticket = input("Ticket? (ja/nein) ").strip().lower()
if ticket == "ja":
alter = int(input("Alter: "))
if alter >= 11:
print("Willkommen!")
else:
print("Ticket ok, aber noch zu jung.")
else:
print("Ohne Ticket kein Eintritt.")

Py: „Zuerst äußere Tür, dann innere Tür.“
Lily: „Einrückung doppelt – also zwei Ebenen.“
Buggy mischt die Einrückung und verliert den Überblick.

Ablauf-Tabelle

TicketAlterAusgabe
nein(egal)Ohne Ticket …
ja10Ticket ok, aber noch zu jung
ja12Willkommen!

Wann verschachteln – wann nicht?

Verschachteln ist ok, wenn der zweite Check nur im ersten Fall Sinn hat (z. B. Alter nur fragen, wenn Ticket da ist).

Oft lesbarer:

  • flaches if / elif / else
  • oder später and (nächstes Kapitel)

Für den Anfang: maximal zwei Ebenen. Drei und mehr werden schnell unleserlich.

Rate mal!

x = 10
if x > 5:
if x > 20:
print("A")
else:
print("B")
else:
print("C")
Aufloesung

B – äußeres True (10>5), inneres False (10>20) → else innen.

Alternative mit and (Ausblick)

Dieselbe Idee grob mit and (ohne zweites input):

if ticket == "ja" and alter >= 11:
print("Willkommen!")

Unterschied: Bei Verschachtelung kannst du verschiedene Meldungen pro Ebene geben („kein Ticket“ vs. „zu jung“). Mit einem flachen and ist die Absage oft weniger differenziert – es sei denn, du baust mehrere ifs.

Neue Wörter

Verschachtelungnesting

Ein Block steckt in einem anderen – z. B. if in if.

Ebenelevel / nesting level

Wie tief etwas eingerueckt ist – aeussere vs. innere Entscheidung.

Was passiert im Computer?

  1. äußere Bedingung prüfen
  2. wenn False → äußerer else (falls vorhanden)
  3. wenn True → inneren Code ausführen
  4. dort innere Bedingung prüfen
  5. Einrückung zeigt, was zu welcher Ebene gehört

Häufige Fehler

FehlerHinweis
Einrückung gemischtgleiche Ebene = gleiche Einrückung
inneres else dem äußeren zuordnenPosition + Einrückung prüfen
4 Ebenen tiefumbauen, Hilfsvariablen, and/or
innere Variable vor äußerem True nutzenReihenfolge beachten

Probiere es selbst

Experiment 1 – Wetter

regen = input("Regnet es? (ja/nein) ").strip().lower()
if regen == "ja":
schirm = input("Schirm dabei? (ja/nein) ").strip().lower()
if schirm == "ja":
print("Gut vorbereitet.")
else:
print("Hole einen Schirm!")
else:
print("Kein Regen – super.")

Experiment 2 – Spiel

Wenn leben > 0, innen prüfen ob schluessel True ist.

Experiment 3 – flach vs. verschachtelt

Dieselbe Logik einmal verschachtelt, einmal mit and skizzieren.

Experiment 4 – Rate-mal ändern

Setze x = 25 und x = 3 im Rate-mal-Beispiel und sag die Ausgabe voraus.

Fehlerdetektiv

if ticket == "ja":
if alter >= 11:
print("Willkommen!")
else:
print("Zu jung oder kein Ticket – unklar!")
Loesung anzeigen

Das else gehört zum äußeren if (Ticket), nicht zum Alter.
Für „Ticket ok, aber zu jung“ brauchst du ein inneres else mit passender Einrückung.

Übungen

Level 1 – Entdecken

x = 8: äußeres x > 0, innen x > 10 → welche Ausgabe?

Loesung
x = 8
if x > 0:
if x > 10:
print("gross")
else:
print("positiv aber klein")
else:
print("nicht positiv")
# -> positiv aber klein

Level 2 – Anwenden

Passwort-Tor: erst "club", dann zusätzlicher Code "42".

Beispiel
pw = input("Passwort: ").strip().lower()
if pw == "club":
code = input("Code: ").strip()
if code == "42":
print("Zutritt")
else:
print("Falscher Code")
else:
print("Falsches Passwort")

Level 3 – Erweitern

Drei Meldungen klar trennen: kein Ticket / zu jung / willkommen.

Loesungsidee

Wie im Club-Beispiel oben – äußeres Ticket-if, inneres Alter-if mit else.

Mini-Challenge

Baue einen zweistufigen Club-Check mit zwei klaren Absagen.
Erkläre: Wann ist Verschachtelung besser als ein einziges and?

Zusammenfassung

  • if in if = verschachtelte Bedingungen.
  • Einrückung zeigt die Ebene.
  • Gut, wenn der innere Check nur manchmal Sinn hat.
  • Maximal zwei Ebenen am Anfang.
  • Alternative: flaches elif oder and (nächstes Kapitel).
  • Verschiedene Fehlermeldungen sind ein Vorteil der Verschachtelung.

Mini-Quiz

Mini-QuizWas zeigt bei verschachtelten ifs die Zugehoerigkeit?
  1. Was ist Verschachtelung?
  2. Wie viele Ebenen sind am Anfang ratsam?
  3. Warum manchmal and statt if in if?
Loesungen
  1. if (o. Ä.) im Block eines anderen if.
  2. Maximal zwei.
  3. Oft flacher und kürzer, wenn eine Kombi-Regel reicht.

Verschachtelung sitzt! Als Nächstes: logische Operatoren (and/or/not).