Logische Operatoren Teil 4
Teil des Abschnitts Grundlagen der Python-Journey von Coddy. Lektion 19 von 77.
Beim Arbeiten 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.
De Morgansche Gesetze liefern Regeln zur Umformung logischer Ausdrücke. Diese Umformungen helfen dabei, 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 verteilst: Jeder Operand wird negiert (A wird zu not A, B wird zu not B), und der Operator wechselt: and wird zu or. not negiert nicht nur die Werte, sondern wechselt auch den Verknüpfungsoperator 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) # TrueZweites Gesetz: not (A or B) ist dasselbe wie (not A) and (not B)
Hier gilt dieselbe Regel mit zwei Schritten: jeder Operand wird negiert, und der Operator kehrt sich um. Diesmal wird or zu and. Du kannst es dir so merken: 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) # TrueKomplexes 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 Berufserfahrung UND kein Abschluss) ODER die Altersanforderung nicht erfüllt ist
has_experience = False
has_degree = False
meets_age = True
# Komplexe Bedingung, die sowohl UND als auch ODER verwendet
reject_application = (not has_experience and not has_degree) or not meets_age
print(reject_application) # True (abgelehnt wegen fehlender Berufserfahrung UND fehlendem 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)Python wertet and vor or aus. Daher bedeutet a or b and c dasselbe wie a or (b and c). Setze Klammern um den Teil, der zuerst geprüft werden soll: (a or b) and c.
Wann du die Gesetze von De Morgan anwendest:
- Um negative Bedingungen leichter lesbar zu machen
- Um komplexe logische Ausdrücke zu vereinfachen
- Um zwischen verschiedenen Darstellungen derselben Logik umzuwandeln
Aufgabe
AnfängerDu hilfst einem Tiergeschäft dabei, ein System zu erstellen, mit dem bestimmt wird, ob es einem Kunden ein Haustier verkaufen kann.
Diese Variablen sind bereits für dich gesetzt:
has_licensemit dem WertTruehas_spacemit dem WertTruehas_experiencemit dem WertFalse
Schreibe logische Ausdrücke, um Folgendes zu bestimmen:
can_sell_regular_pet: Der Kunde kann ein gewöhnliches Haustier kaufen, wenn er ENTWEDER eine Lizenz ODER Erfahrung hat UND genügend Platz haben musscan_sell_exotic_pet: Der Kunde kann ein exotisches Haustier kaufen, wenn er SOWOHL eine Lizenz ALS AUCH Erfahrung hat UND genügend Platz haben musscannot_sell_any_pet: Das Geschäft kann KEIN Haustier verkaufen, wenn der Kunde WEDER eine Lizenz NOCH Erfahrung hat ODER keinen Platz hat
Probier es selbst
# 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)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung – Einfache LogikLogische Operatoren Teil 3Logische Operatoren Teil 42Variablen
ZahlenStringsBooleanBenennungskonventionenLeere VariablenRückblick - Variablen initialisieren5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakContinueWiederholung - FakultätDie Range-FunktionVerschachtelte SchleifeWiederholung - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenWiederholung – Einfache MathematikVergleichsoperatoren6Grundlagen Ein- und Ausgabe
AusgabeAusgabe mit VariablenEingabeTypumwandlungWiederholung - Bis 120Wiederholung - Wahr oder Falsch9Funktionen
Funktion deklarierenArgumenteRückgabeWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandardwerte12Iterieren über Sequenzen
Iterieren über ElementeDie Enumerate-FunktionIterieren über Strings Teil 1Iterieren über Strings Teil 2Übe selbstständig: Online-Python-Compiler