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 einif(mit Block)
innerhalb des Blocks eines anderenifsteht.
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
| Ticket | Alter | Ausgabe |
|---|---|---|
| nein | (egal) | Ohne Ticket … |
| ja | 10 | Ticket ok, aber noch zu jung |
| ja | 12 | Willkommen! |
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
Ein Block steckt in einem anderen – z. B. if in if.
Wie tief etwas eingerueckt ist – aeussere vs. innere Entscheidung.
Was passiert im Computer?
- äußere Bedingung prüfen
- wenn False → äußerer else (falls vorhanden)
- wenn True → inneren Code ausführen
- dort innere Bedingung prüfen
- Einrückung zeigt, was zu welcher Ebene gehört
Häufige Fehler
| Fehler | Hinweis |
|---|---|
| Einrückung gemischt | gleiche Ebene = gleiche Einrückung |
| inneres else dem äußeren zuordnen | Position + Einrückung prüfen |
| 4 Ebenen tief | umbauen, Hilfsvariablen, and/or |
| innere Variable vor äußerem True nutzen | Reihenfolge 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
- Was ist Verschachtelung?
- Wie viele Ebenen sind am Anfang ratsam?
- Warum manchmal and statt if in if?
Loesungen
- if (o. Ä.) im Block eines anderen if.
- Maximal zwei.
- Oft flacher und kürzer, wenn eine Kombi-Regel reicht.
Verschachtelung sitzt! Als Nächstes: logische Operatoren (and/or/not).