Zum Hauptinhalt springen

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

  1. Klammern bei gemischtem and/or
  2. Hilfsvariablen mit klaren Namen (darf_rein, ist_wochenende)
  3. nicht zu viel not stapeln
  4. lieber zwei ifs als eine unlesbare Bedingung
  5. Kommentare nur, wenn der Name nicht schon alles sagt

Operator-Vorrang (vereinfacht)

  • not vor and vor or
  • 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

Hilfsvariablehelper variable

Variable, die einen Zwischenschritt der Logik benennt und klar macht.

Lesbarkeitreadability

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

IrrtumRichtig
Kürzer = besserKlarer = besser
and/or-Vorrang immer im KopfKlammern setzen
Hilfsvariablen sind „unnötig“sie dokumentieren Absicht
ein if für allesmanchmal 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.
  • not vor and vor or – im Zweifel klammern.
  • Hilfsvariablen machen Absicht sichtbar.
  • Lesbarkeit schlägt „eine coole Zeile“.
  • Stille Logikfehler entstehen oft durch unklare Vorrang-Annahmen.

Mini-Quiz

Mini-QuizWas hilft bei gemischtem and und or am meisten?
  1. Welcher Operator bindet enger: and oder or?
  2. Was ist eine Hilfsvariable?
  3. Warum Monsterzeilen riskant sind?
Loesungen
  1. and vor or (vereinfacht).
  2. Eine Variable, die einen Zwischenschritt benennt.
  3. Man missversteht die Logik leicht.

Lesbare Logik! Mini-Projekt: Schwimmbad-Check.