Stewdent.eu
▾

Logische Operatoren

Logische Operatoren (and, or, not) verknüpfen boolesche Ausdrücke. Sie ermöglichen es, komplexe Bedingungen aus einfacheren Teilen zusammenzusetzen.

Zuletzt aktualisiert: 9. Dezember 2025

★★☆☆☆ Stufe 2computingprogrammingbedingungenlogischandornot4 Min Lesezeit

Fehler melden

Manchmal reicht eine einzelne Bedingung nicht aus. Was, wenn du prüfen möchtest, ob jemand sowohl alt genug als auch im Besitz eines Tickets ist? Oder ob eine Zahl entweder negativ oder null ist? Dafür gibt es logische Operatoren.

Die drei logischen Operatoren

Python hat drei logische Operatoren: and, or und not.

and — und

and ist nur True, wenn beide Bedingungen wahr sind:

alter = 17
hat_ticket = True

if alter >= 18 and hat_ticket:
    print("Eintritt erlaubt")
else:
    print("Eintritt verweigert")   # Wird ausgegeben, da alter < 18

Wahrheitstabelle für and:

ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

or — oder

or ist True, wenn mindestens eine Bedingung wahr ist:

ist_wochenende = True
ist_feiertag = False

if ist_wochenende or ist_feiertag:
    print("Keine Schule!")   # Wird ausgegeben

Wahrheitstabelle für or:

ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

not — nicht

not kehrt einen booleschen Wert um:

ist_angemeldet = False

if not ist_angemeldet:
    print("Bitte zuerst anmelden!")
Anot A
TrueFalse
FalseTrue
Hinweis

In der Logik heißen diese Operationen auch AND (Konjunktion), OR (Disjunktion) und NOT (Negation). Sie bilden die Grundlage der Booleschen Algebra, die auch in der Computerhardware verwendet wird.

Kombinierte Bedingungen

Du kannst mehrere logische Operatoren in einem Ausdruck kombinieren:

alter = 15
noten_gut = True
genehmigung = True

darf_teilnehmen = alter >= 13 and alter <= 18 and noten_gut and genehmigung
print(darf_teilnehmen)   # True
Tipp

Python wertet and- und or-Ausdrücke von links nach rechts aus und stoppt, sobald das Ergebnis feststeht. Das nennt sich Kurzschlussauswertung: Bei False and ... wird der Rest nicht mehr geprüft, weil das Ergebnis schon False ist.

Reihenfolge der Auswertung

Wie in der Mathematik gibt es eine Reihenfolge:

  1. not (höchste Priorität)
  2. and
  3. or (niedrigste Priorität)
print(True or False and False)
# = True or (False and False)  (and zuerst)
# = True or False
# = True

Wenn du unsicher bist, verwende Klammern, um die gewünschte Reihenfolge klarzumachen:

ergebnis = (True or False) and False   # False
ergebnis = True or (False and False)   # True
Warnung

Achte auf die Auswertungsreihenfolge bei komplexen Bedingungen. Ein häufiger Fehler ist zu schreiben: if x == 1 or 2: anstatt if x == 1 or x == 2:. Der erste Ausdruck ist immer wahr, weil 2 (eine nicht-null Zahl) allein als True gewertet wird!

Praktisches Beispiel

def darf_leihen(alter, hat_ausweis, buecher_ausstehend):
    """Prüft, ob eine Person Bücher ausleihen darf."""
    if not hat_ausweis:
        return "Kein Bibliotheksausweis vorhanden."
    if buecher_ausstehend > 3:
        return "Zu viele ausstehende Bücher."
    if alter < 6:
        return "Zu jung für eigenständige Ausleihe."
    return "Ausleihe genehmigt!"

print(darf_leihen(14, True, 1))    # Ausleihe genehmigt!
print(darf_leihen(14, False, 0))   # Kein Bibliotheksausweis vorhanden.

Übungsaufgaben

Welchen Wert hat der Ausdruck: True and False or True?

Antwort anzeigen
True. Python wertet zuerst 'and' aus: True and False = False. Dann 'or': False or True = True. Das Endergebnis ist True.

Warum ist 'if alter == 16 or 17:' ein häufiger Fehler, und wie schreibt man es richtig?

Antwort anzeigen
In Python wird '17' als eigenständiger Ausdruck gewertet, der immer True ist (weil 17 eine nicht-null Zahl ist). Deshalb ist die Bedingung immer wahr, egal was 'alter' ist. Richtig schreibt man: if alter == 16 or alter == 17: — jede Seite von 'or' muss ein vollständiger Vergleich sein.