Menu
Coddy logo textTech

Logische Operatoren Teil 4

Teil des Abschnitts Fundamentals der Python-Journey von Coddy. Lektion 19 von 77.

Bei der Arbeit mit logical expressions müssen wir sie manchmal vereinfachen oder umstellen. Das ist besonders nützlich beim Umgang mit komplexen conditions, die mehrere and- und or-Operatoren kombinieren.

De Morgan's Laws liefern Regeln zur Umformung von logical expressions. Diese Umformungen helfen dabei, Code lesbarer und leichter verständlich zu machen.

First Law: not (A and B) ist dasselbe wie (not A) or (not B)

Beachte, dass zwei Dinge geschehen, wenn du not in den Ausdruck einsetzt: Jeder Operand wird negiert (A wird zu not A, B wird zu not B), und der Operator kehrt sich um: and wird zu or. Das not negiert nicht nur die Werte, sondern wechselt auch den verbindenden Operator zwischen ihnen.

Zum Beispiel:

# Lass uns prüfen, ob eine Zahl NICHT (zwischen 1 und 10) ist
number = 15

# Diese beiden Ausdrücke sind äquivalent:
result1 = not (number >= 1 and number <= 10)
result2 = (not number >= 1) or (not number <= 10)

print(result1)  # True
print(result2)  # True

Zweites Law: not (A or B) ist dasselbe wie (not A) and (not B)

Hier gilt dieselbe Regel in zwei Schritten: each Operand wird negiert, und der Operator kehrt sich um. Dieses Mal wird or zu and. Stell es dir so vor: Wenn du not verteilst, kehrt es immer andor um und negiert dabei jeden Teil.

Zum Beispiel:

# Überprüfen, ob eine Person NICHT (Student oder beschäftigt) ist
is_student = False
is_employed = False

# Diese beiden Ausdrücke sind äquivalent:
result1 = not (is_student or is_employed)
result2 = (not is_student) and (not is_employed)

print(result1)  # True
print(result2)  # True

Complexes Beispiel mit AND und OR: Manchmal benötigst du Bedingungen, die beide Operatoren kombinieren. Hier ist ein praktisches Beispiel:

# Prüfen, ob wir eine Stellenbewerbung NICHT annehmen können
# Wir lehnen ab, wenn: (keine Erfahrung AND kein Abschluss) OR die Altersanforderung nicht erfüllt

has_experience = False
has_degree = False
meets_age = True

# Komplexe Bedingung mit sowohl AND als auch OR
reject_application = (not has_experience and not has_degree) or not meets_age

print(reject_application)  # True (abgelehnt, weil keine Erfahrung AND kein Abschluss)
# Dies kann auch mit den De Morgan'schen Gesetzen geschrieben werden:
# accept = (experience OR degree) AND meets age; reject = not accept
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application

print(reject_application2)  # True (gleiches Ergebnis, andere Logik)

Wann du De Morgan's Laws verwenden solltest:

  • Um negative conditions leichter lesbar zu machen
  • Um komplexe logical expressions zu vereinfachen
  • Um zwischen verschiedenen Darstellungen derselben logic zu konvertieren
challenge icon

Aufgabe

Anfänger

Du hilfst einem pet-Shop dabei, ein System zu erstellen, das feststellt, ob sie einem Kunden ein pet verkaufen can.

Initialize die folgenden Variablen:

  • has_license mit dem Wert True
  • has_space mit dem Wert True
  • has_experience mit dem Wert False

Schreibe logische Ausdrücke, um festzustellen, ob:

  • can_sell_regular_pet: Der Kunde ein regular pet kaufen can, wenn er ENTWEDER eine Lizenz ODER experience hat UND Platz haben muss
  • can_sell_exotic_pet: Der Kunde ein exotic pet kaufen can, wenn er BOTH eine Lizenz UND experience hat UND Platz haben muss
  • cannot_sell_any_pet: Der Shop kann KEIN pet verkaufen, wenn der Kunde KEINE Lizenz UND KEINE experience hat ODER keinen Platz hat

Erwartete Ergebnisse mit den angegebenen Werten:

  • can_sell_regular_pet: True (hat Lizenz und Platz)
  • can_sell_exotic_pet: False (keine experience)
  • cannot_sell_any_pet: False (hat both Lizenz und Platz)

Probier es selbst

# Variablen initialisieren

# Bedingungen berechnen
# Ersetze jeden Platzhalterwert unten durch den korrekten logischen Ausdruck
can_sell_regular_pet = False
can_sell_exotic_pet = False
cannot_sell_any_pet = False

# Lösche die Zeilen unten nicht
print("Can sell regular pet:", can_sell_regular_pet)
print("Can sell exotic pet:", can_sell_exotic_pet)
print("Cannot sell any pet:", cannot_sell_any_pet)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Fundamentals

Übe selbstständig: Online-Python-Compiler