Menu
CoddyTech

Logische Operatoren Teil 4

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

Bei der Arbeit mit logischen Ausdrücken müssen wir sie manchmal vereinfachen oder umstellen. Das ist besonders nützlich bei komplexen Bedingungen, die mehrere and- und or-Operatoren kombinieren.

Die de Morganschen Gesetze liefern Regeln zum Umformen logischer Ausdrücke. Diese Umformungen tragen dazu bei, Code lesbarer und verständlicher zu machen.

Erstes Gesetz: not (A and B) ist dasselbe wie (not A) or (not B)

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

Zum Beispiel:

# Prüfen wir, ob eine Zahl NICHT (zwischen 1 und 10) liegt
number = 15
# Diese beiden Ausdrücke sind gleichwertig:
result1 = not (number >= 1 and number <= 10)
result2 = (not number >= 1) or (not number <= 10)
print(result1)  # True
print(result2)  # True

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

Hier gilt dieselbe Zweischrittregel: jeder Operand wird negiert, und der Operator kehrt sich um. Diesmal wird or zu and. Denk daran: Wenn du not verteilst, kehrt sich and ↔ or immer um, während jeder Teil negiert wird.

Zum Beispiel:

# Prüfen, ob eine Person NICHT (Student oder berufstätig) ist
is_student = False
is_employed = False
# Diese beiden Ausdrücke sind gleichwertig:
result1 = not (is_student or is_employed)
result2 = (not is_student) and (not is_employed)
print(result1)  # True
print(result2)  # True

Komplexes Beispiel mit AND und OR: Manchmal brauchst du Bedingungen, die beide Operatoren kombinieren. Hier ist ein praktisches Beispiel:

# Prüfen, ob wir eine Bewerbung NICHT annehmen können
# Wir lehnen ab, wenn: (keine Erfahrung AND kein Abschluss) OR die Altersanforderung nicht erfüllt ist
has_experience = False
has_degree = False
meets_age = True
# Komplexe Bedingung mit AND und 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 lässt sich auch mithilfe der De-Morgan-Gesetze schreiben:
# 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 verwendet man die de Morganschen Gesetze:

  • Um negative Bedingungen leichter lesbar zu machen
  • Um komplexe logische Ausdrücke zu vereinfachen
  • Um zwischen verschiedenen Darstellungen derselben Logik zu wechseln
challenge icon

Aufgabe

Anfänger

Du hilfst einem Zoofachgeschäft dabei, ein System zu erstellen, mit dem entschieden werden kann, ob es einem Kunden ein Haustier verkaufen kann.

Initialisiere 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 gewöhnliches Haustier kaufen kann, wenn er ENTWEDER eine Lizenz ODER Erfahrung hat UND genügend Platz haben muss
  • can_sell_exotic_pet: Der Kunde ein exotisches Haustier kaufen kann, wenn er SOWOHL eine Lizenz ALS AUCH Erfahrung hat UND genügend Platz haben muss
  • cannot_sell_any_pet: Das Geschäft KEIN Haustier verkaufen kann, wenn der Kunde KEINE Lizenz UND KEINE Erfahrung hat ODER KEINEN Platz hat

Erwartete Ergebnisse mit den angegebenen Werten:

  • can_sell_regular_pet: True (hat eine Lizenz und genügend Platz)
  • can_sell_exotic_pet: False (keine Erfahrung)
  • cannot_sell_any_pet: False (hat sowohl eine Lizenz als auch genügend Platz)

Probier es selbst

# Variablen initialisieren

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

# Lösche die folgenden Zeilen 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 Grundlagen

Übe selbstständig: Online-Python-Compiler