Komplexe Bedingungen lesbar schreiben
Warum brauchen wir das?
Das hier ist legal – aber anstrengend:
if alter >= 10 and hat_ticket or vip:
print("rein")
Meintest du:
(alter >= 10 and hat_ticket) or vip- oder
alter >= 10 and (hat_ticket or vip)
Verschiedene Bedeutungen!
Klammern und Hilfsvariablen retten Lesbarkeit – und verhindern stille Logikfehler.
Definition: lesbare Bedingung
Definition – lesbare Bedingung:
Eine Bedingung ist lesbar, wenn eine andere Person (oder du in einer Woche)
die Regel sofort versteht – ohne Rätselraten über Vorrang und Klammern.
Code wird häufiger gelesen als geschrieben. Klarheit ist Freundlichkeit.
Luna macht es klar
alter = 12
hat_ticket = True
vip = False
darf_alter = alter >= 10
darf_eintritt = (darf_alter and hat_ticket) or vip
if darf_eintritt:
print("Willkommen!")
else:
print("Leider nicht.")
Lily: „Namen statt Hirnverknotung.“
Py: „Ich mag klare Boxen.“
Buggy schreibt alles in eine Monsterzeile und rät die Bedeutung.
Tipps für lesbare Bedingungen
- Klammern bei gemischtem
and/or - Hilfsvariablen mit klaren Namen (
darf_rein,ist_wochenende) - nicht zu viel
notstapeln - lieber zwei ifs als eine unlesbare Bedingung
- Kommentare nur, wenn der Name nicht schon alles sagt
Operator-Vorrang (vereinfacht)
notvorandvoror- Im Zweifel: Klammern
print(True or False and False) # oft ueberraschend
print(True or (False and False))
print((True or False) and False)
Probiere die drei Zeilen und erkläre den Unterschied.
Neue Wörter
Variable, die einen Zwischenschritt der Logik benennt und klar macht.
Wie leicht Code fuer Menschen zu verstehen ist.
Was passiert im Computer?
Python wertet nach Vorrangregeln aus – nicht nach „was du meintest“.
Klammern erzwingen deine Absicht. Hilfsvariablen ändern die Logik nicht, machen
sie aber für Menschen und Debuggen leichter.
Häufige Irrtümer
| Irrtum | Richtig |
|---|---|
| Kürzer = besser | Klarer = besser |
| and/or-Vorrang immer im Kopf | Klammern setzen |
| Hilfsvariablen sind „unnötig“ | sie dokumentieren Absicht |
| ein if für alles | manchmal zwei ifs lesbarer |
Probiere es selbst
Experiment 1 – Vorrang
print(True or False and False)
print((True or False) and False)
Experiment 2 – umschreiben
alter = 12
ticket = True
# unklar:
# if alter >= 10 and ticket or False:
# klar:
darf = (alter >= 10 and ticket) or False
print(darf)
Experiment 3 – Wochenende + Wetter
tag = input("Tag: ").strip().lower()
regen = input("Regen? (ja/nein) ").strip().lower()
wochenende = tag == "samstag" or tag == "sonntag"
trocken = regen != "ja"
if wochenende and trocken:
print("Park!")
else:
print("Drinnen ueben.")
Experiment 4 – not entwirren
Ersetze not fertig == True durch eine klarere Form.
Fehlerdetektiv
if alter >= 10 and hat_ticket or vip:
print("rein")
Loesung anzeigen
Schreibe die Absicht mit Klammern:
if (alter >= 10 and hat_ticket) or vip:
print("rein")
oder:
if alter >= 10 and (hat_ticket or vip):
print("rein")
Und idealerweise mit Hilfsvariablen.
Übungen
Level 1 – Entdecken
Setze Klammern so, dass or zuerst gruppiert wird:
a and b or c → (a and b) or c und a and (b or c) printen mit True/False-Werten.
Level 2 – Anwenden
Club: Alter ab 11 und (Ticket oder VIP). Mit Hilfsvariablen.
Loesung
alter = int(input("Alter: "))
ticket = input("Ticket? (ja/nein) ").strip().lower() == "ja"
vip = input("VIP? (ja/nein) ").strip().lower() == "ja"
alt_ok = alter >= 11
eintritt = alt_ok and (ticket or vip)
if eintritt:
print("Willkommen")
else:
print("Kein Eintritt")
Level 3 – Erweitern
Drei bool-Hilfsvariablen für „Hausaufgaben fertig“, „Tasche gepackt“, „Puenktlich“.
Zur Schule nur wenn alle drei True (and).
Mini-Challenge
Nimm eine unlesbare Bedingung (frei erfunden) und schreibe sie zweimal um:
einmal nur mit Klammern, einmal mit Hilfsvariablen.
Erkläre: Warum sind Namen oft besser als Kommentare?
Zusammenfassung
- Komplexe Logik braucht Klammern und Namen.
notvorandvoror– im Zweifel klammern.- Hilfsvariablen machen Absicht sichtbar.
- Lesbarkeit schlägt „eine coole Zeile“.
- Stille Logikfehler entstehen oft durch unklare Vorrang-Annahmen.
Mini-Quiz
- Welcher Operator bindet enger: and oder or?
- Was ist eine Hilfsvariable?
- Warum Monsterzeilen riskant sind?
Loesungen
andvoror(vereinfacht).- Eine Variable, die einen Zwischenschritt benennt.
- Man missversteht die Logik leicht.
Lesbare Logik! Mini-Projekt: Schwimmbad-Check.