Logische Operatoren Teil 4
Teil des Abschnitts Fundamentals der Python-Journey von Coddy — Lektion 19 von 77.
Beim Arbeiten mit logischen Ausdrücken müssen wir diese manchmal vereinfachen oder umstellen. Dies ist besonders nützlich beim Umgang mit komplexen Bedingungen, die mehrere and und or Operatoren kombinieren.
De Morgansche Gesetze bieten Regeln für die Umformung logischer Ausdrücke. Diese Transformationen helfen dabei, Code lesbarer und leichter verständlich zu machen.
Erstes Gesetz: not (A and B) ist dasselbe wie (not A) or (not B)
Beachten Sie, dass zwei Dinge passieren, wenn Sie not in den Ausdruck verteilen: 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; es 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 äquivalent:
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 Zwei-Schritt-Regel: jeder Operand wird negiert, und der Operator kehrt sich um — dieses Mal wird or zu and. Stellen Sie es sich so vor: Das Verteilen von not kehrt and ↔ or immer um, während jeder Teil negiert wird.
Zum Beispiel:
# Überprüfen, ob eine Person NICHT (ein Student oder angestellt) 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) # TrueKomplexes Beispiel mit sowohl AND als auch OR: Manchmal benötigen Sie Bedingungen, die beide Operatoren kombinieren. Hier ist ein praktisches Beispiel:
# Überprüfung, ob wir eine Bewerbung NICHT annehmen können
# Wir lehnen ab, wenn: (keine Erfahrung UND kein Abschluss) ODER die Altersanforderung nicht erfüllt ist
has_experience = False
has_degree = False
meets_age = True
# Komplexe Bedingung unter Verwendung von sowohl AND als auch OR
reject_application = (not has_experience and not has_degree) or not meets_age
print(reject_application) # True (abgelehnt, da keine Erfahrung UND kein Abschluss)# Dies kann auch unter Verwendung der De Morganschen Gesetze geschrieben werden:
# annehmen = (Erfahrung ODER Abschluss) UND Alter erfüllt; ablehnen = nicht annehmen
accept_application = (has_experience or has_degree) and meets_age
reject_application2 = not accept_application
print(reject_application2) # True (gleiches Ergebnis, unterschiedliche Logik)Wann die De Morganschen Gesetze verwendet werden:
- Um negative Bedingungen leichter lesbar zu machen
- Um komplexe logische Ausdrücke zu vereinfachen
- Um zwischen verschiedenen Darstellungen derselben Logik zu konvertieren
Aufgabe
AnfängerDu hilfst einer Tierhandlung dabei, ein System zu erstellen, um zu bestimmen, ob sie ein Haustier an einen Kunden verkaufen können.
Initialisiere die folgenden Variablen:
has_licensemit dem WertTruehas_spacemit dem WertTruehas_experiencemit dem WertFalse
Schreibe logische Ausdrücke, um Folgendes zu bestimmen:
can_sell_regular_pet: Ein Kunde kann ein normales Haustier kaufen, wenn er ENTWEDER eine Lizenz ODER Erfahrung hat UND Platz vorhanden sein musscan_sell_exotic_pet: Ein Kunde kann ein exotisches Haustier kaufen, wenn er SOWOHL eine Lizenz ALS AUCH Erfahrung hat UND Platz vorhanden sein musscannot_sell_any_pet: Das Geschäft kann KEIN Haustier verkaufen, wenn der Kunde WEDER eine Lizenz NOCH Erfahrung hat ODER KEINEN Platz hat
Erwartete Ergebnisse mit den gegebenen Werten:
can_sell_regular_pet:True(hat Lizenz und Platz)can_sell_exotic_pet:False(keine Erfahrung)cannot_sell_any_pet:False(hat sowohl Lizenz als auch Platz)
Spickzettel
De Morgansche Gesetze — Regeln zur Umformung logischer Ausdrücke:
not (A and B)→(not A) or (not B)not (A or B)→(not A) and (not B)
Beim Anwenden von not: wird jeder Operand negiert und der Operator kehrt sich um (and ↔ or).
# Beispiel für das erste Gesetz
result = not (number >= 1 and number <= 10)
result = (not number >= 1) or (not number <= 10) # äquivalent
# Beispiel für das zweite Gesetz
result = not (is_student or is_employed)
result = (not is_student) and (not is_employed) # äquivalentProbier es selbst
# Variablen initialisieren
# Bedingungen berechnen
can_sell_regular_pet =
can_sell_exotic_pet =
cannot_sell_any_pet =
# Die folgenden Zeilen nicht löschen
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 Fundamentals
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