Verstehen der Booleschen Logik in Python 3
Einführung
Der Boolesche Datentyp kann einen von zwei Werten annehmen, entweder wahr oder falsch. Wir verwenden Booleans in der Programmierung, um Vergleiche anzustellen und den Kontrollfluss in einem bestimmten Programm zu bestimmen.
Boolesche Werte repräsentieren die Wahrheitswerte, die mit dem logischen Zweig der Mathematik verbunden sind, der Algorithmen in der Informatik informiert. Benannt nach dem Mathematiker George Boole, beginnt das Wort Boolesch immer mit einem großgeschriebenen B. Die Werte True und False werden ebenfalls immer mit einem großen T und F geschrieben, da sie spezielle Werte in Python sind.
In diesem Tutorial werden wir besprechen, was Sie benötigen, um zu verstehen, wie Booleans in Python funktionieren, und wir werden die Vergleichsoperatoren, logischen Operatoren und Wahrheitstabellen erkunden.
Voraussetzungen
Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.
Vergleichsoperatoren
In der Programmierung werden Vergleichsoperatoren verwendet, um Werte miteinander zu vergleichen und auf einen einzelnen Booleschen Wert von entweder Wahr oder Falsch zu reduzieren.
Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.
Die untenstehende Tabelle zeigt die booleschen Vergleichsoperatoren.
| Betriebsführer | Was es bedeutet |
|---|---|
| == | Gleich zu |
| != ist der Ungleichheitsoperator in vielen Programmiersprachen. | Nicht gleich zu |
< | Weniger als |
| > | Größer als |
| <= | Weniger als oder gleich |
| größer oder gleich | Größer als oder gleich |
Um zu verstehen, wie diese Operatoren funktionieren, lassen Sie uns zwei Ganzzahlen zwei Variablen in einem Python-Programm zuweisen:
x = 5
y = 8
In diesem Beispiel ist x, da es den Wert 5 hat, kleiner als y, das den Wert 8 hat.
Mit diesen beiden Variablen und ihren zugehörigen Werten gehen wir die Operatoren aus der obigen Tabelle durch. In unserem Programm werden wir Python bitten, auszugeben, ob jeder Vergleichsoperator zu entweder Wahr oder Falsch evaluiert. Um uns und anderen Menschen zu helfen, dieses Ergebnis besser zu verstehen, lassen wir Python auch einen String ausgeben, um uns zu zeigen, was es evaluiert.
x = 5
y = 8
print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)
Wenn wir dieses Programm ausführen, erhalten wir die folgende Ausgabe.
x == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False
Nach mathematischer Logik hat Python in jedem der oben genannten Ausdrücke ausgewertet:
- Ist 5 (
x) gleich 8 (y)? Falsch - Ist 5 nicht gleich 8? Wahr
- Ist 5 weniger als 8? Wahr
- Ist 5 größer als 8? Falsch
- Ist 5 kleiner oder gleich 8? Wahr
- Ist 5 nicht kleiner oder gleich 8? Falsch
Obwohl wir hier ganze Zahlen verwendet haben, könnten wir sie durch Fließkommawerte ersetzen.
Strings können auch mit booleschen Operatoren verwendet werden. Sie sind groß- und kleinschreibungsempfindlich, es sei denn, Sie verwenden eine zusätzliche String-Methode.
Hier ist, wie Zeichenfolgen in der Praxis mit Booleschen Operatoren verglichen werden:
Sammy = "Sammy"
sammy = "sammy"
print("Sammy == sammy: ", Sammy == sammy)
Die Ausgabe des obigen Programms liefert Folgendes.
Sammy == sammy: False
Der String "Sammy" oben ist nicht gleich dem String "sammy", da sie nicht identisch sind; der eine beginnt mit einem Großbuchstaben S und der andere mit einem Kleinbuchstaben s. Aber wenn wir eine weitere Variable hinzufügen, die den Wert "Sammy" zugewiesen bekommt, dann werden sie gleichwertig sein:
Sammy = "Sammy"
sammy = "sammy"
also_Sammy = "Sammy"
print("Sammy == sammy: ", Sammy == sammy)
print("Sammy == also_Sammy", Sammy == also_Sammy)
Nach dem Ausführen des obigen Programms erhalten wir folgende Ausgabe. Das zeigt an, dass solange der String absolut identisch ist (einschließlich der Groß- und Kleinschreibung), sie aus einer booleschen Logikperspektive als gleichwertig bewertet werden.
Sammy == sammy: False
Sammy == also_Sammy: True
Sie können auch die anderen Vergleichsoperatoren wie > und < verwenden, um zwei Strings zu vergleichen. Python vergleicht diese Strings lexikographisch unter Verwendung der ASCII-Werte der Zeichen.
Wir können auch Boolesche Werte mit Vergleichsoperatoren auswerten:
t = True
f = False
print("t != f: ", t != f)
Das obige Programm gibt Folgendes zurück.
t != f: True
Wie im obigen Ergebnis angegeben, bewertete der von uns geschriebene Code, dass True nicht gleich False ist.
Beachten Sie den Unterschied zwischen den beiden Operatoren = und ==.
x = y # Sets x equal to y
x == y # Evaluates whether x is equal to y
Der erste, =, ist der Zuweisungsoperator, der einen Wert einem anderen zuweist. Der zweite, ==, ist ein Vergleichsoperator, der überprüft, ob zwei Werte gleich sind.
Logische Operatoren
Es gibt drei logische Operatoren, die verwendet werden, um Werte zu vergleichen. Sie bewerten Ausdrücke auf Boolean-Werte und geben entweder True oder False zurück. Diese Operatoren sind and, or und not und sind in der Tabelle unten definiert.
| Betriebsführer | Was es bedeutet | Beispiel |
|---|---|---|
| und | Wahr, wenn beide wahr sind | |
oder | Wahr, wenn mindestens eine wahr ist | |
| nicht | Wahr nur wenn falsch | |
Logische Operatoren werden typischerweise verwendet, um zu bewerten, ob zwei oder mehr Ausdrücke wahr oder nicht wahr sind. Zum Beispiel können sie verwendet werden, um festzustellen, ob die Note bestanden und dass der Student im Kurs eingeschrieben ist. Wenn beide dieser Bedingungen wahr sind, wird dem Studenten eine Note im System zugewiesen. Ein weiteres Beispiel wäre zu bestimmen, ob ein Benutzer ein gültiger aktiver Kunde eines Online-Shops ist, basierend darauf, ob er Guthaben im Geschäft hat oder in den letzten 6 Monaten einen Kauf getätigt hat.
Um zu verstehen, wie logische Operatoren funktionieren, lassen Sie uns drei Ausdrücke auswerten:
print((9 > 7) and (2 < 4)) # Both original expressions are True
print((8 == 8) or (6 != 6)) # One original expression is True
print(not(3 <= 1)) # The original expression is False
True
True
True
Im ersten Fall ergibt print((9 > 7) und (2 < 4)) beide Ausdrücke 9 > 7 und 2 < 4 sind wahr, da der und Operator verwendet wird.
Im zweiten Fall, print((8 == 8) or (6 != 6)), da 8 == 8 zu True ausgewertet wurde, machte es keinen Unterschied, dass 6 != 6 zu False ausgewertet wird, weil der or-Operator verwendet wurde. Hätten wir den and-Operator verwendet, würde dies zu False ausgewertet werden.
Im dritten Fall, print(not(3 <= 1)), negiert der not Operator den False-Wert, den 3 <=1 zurückgibt.
Lass uns Fließkommazahlen durch ganze Zahlen ersetzen und auf falsche Bewertungen abzielen:
print((-0.2 > 1.4) and (0.8 < 3.1)) # One original expression is False
print((7.5 == 8.9) or (9.2 != 9.2)) # Both original expressions are False
print(not(-5.7 <= 0.3)) # The original expression is True
Im obigen Beispiel,
- und muss mindestens einen False-Ausdruck haben, der auf False ausgewertet wird,
odermüssen beide Ausdrücke auf Falsch ausgewertet werden,nichtmuss seinen inneren Ausdruck wahr sein, damit der neue Ausdruck falsch ausgewertet wird.
Wenn die oben genannten Ergebnisse für Sie unklar erscheinen, gehen wir im Folgenden einige Wahrheitstabellen durch, um Sie auf den neuesten Stand zu bringen.
Sie können auch zusammengesetzte Aussagen mit and, or und not schreiben:
not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))
Lass uns zuerst den innersten Ausdruck betrachten: (0.8 < 3.1) oder (0.1 == 0.1). Dieser Ausdruck ergibt True, da beide mathematischen Aussagen wahr sind.
Jetzt können wir den zurückgegebenen Wert True nehmen und ihn mit dem nächsten inneren Ausdruck kombinieren: (-0.2 > 1.4) und (True). Dieses Beispiel gibt False zurück, da die mathematische Aussage -0.2 > 1.4 falsch ist, und (False) und (True) ergibt False.
Schließlich haben wir den äußeren Ausdruck: not(False), der zu True evaluiert, sodass der letztlich zurückgegebene Wert, wenn wir diese Aussage ausdrucken, ist:
True
Die logischen Operatoren und, oder und nicht werten Ausdrücke aus und geben boolesche Werte zurück.
Wahrheitstafeln
Es gibt viel über den logischen Zweig der Mathematik zu lernen, aber wir können selektiv einige Aspekte davon lernen, um unser algorithmisches Denken beim Programmieren zu verbessern.
Unten sind Wahrheitstabellen für den Vergleichsoperator == und jeden der logischen Operatoren and, or und not. Während du sie möglicherweise selbst ableiten kannst, kann es auch hilfreich sein, sie auswendig zu lernen, da dies deinen Entscheidungsprozess beim Programmieren beschleunigen kann.
== Wahrheitstabelle
| x | == | y | Rückgaben |
|---|---|---|---|
| True | == | True | True |
| True | == | False | False |
| False | == | True | False |
| False | == | False | True |
UND Wahrheitswerttabelle
| x | und | y | Rückgaben |
|---|---|---|---|
| True | und | True | True |
| True | und | False | False |
| False | und | True | False |
| False | und | False | False |
ODER Wahrheitswerttabelle
| x | oder | y | Rückgaben |
|---|---|---|---|
| True | oder | True | True |
| True | oder | False | True |
| False | oder | True | True |
| False | oder | False | False |
NICHT Wahrheitstabelle
| nicht | x | Rückgaben |
|---|---|---|
| nicht | True | False |
| nicht | False | True |
Wahrheitstabellen sind gängige mathematische Tabellen, die in der Logik verwendet werden, und sind nützlich, um sie sich einzuprägen oder im Hinterkopf zu behalten, wenn man Algorithmen (Anweisungen) in der Computerprogrammierung erstellt.
Verwendung von Booleschen Operatoren zur Steuerung des Flusses
Um den Ablauf und die Ergebnisse eines Programms in Form von Steueranweisungen zu kontrollieren, können wir eine Bedingung gefolgt von einer Klausel verwenden.
Eine Bedingung bewertet sich zu einem Booleschen Wert von Wahr oder Falsch und stellt einen Punkt dar, an dem im Programm eine Entscheidung getroffen wird. Das bedeutet, eine Bedingung sagt uns, ob etwas als wahr oder falsch bewertet wird.
Die Klausel ist der Codeblock, der der Bedingung folgt und das Ergebnis des Programms bestimmt. Das heißt, es ist der mache dies-Teil der Konstruktion „Wenn x wahr ist, dann mache dies.“
Der Codeblock unten zeigt ein Beispiel dafür, wie Vergleichsoperatoren in Kombination mit bedingten Anweisungen verwendet werden, um den Ablauf eines Python-Programms zu steuern:
if grade >= 65: # Condition
print("Passing grade") # Clause
else:
print("Failing grade")
Dieses Programm wird bewerten, ob die Note jedes Schülers bestanden oder nicht bestanden ist. Im Fall eines Schülers mit einer Note von 83 wird die erste Aussage zu True ausgewertet, und die Ausgabe von Bestanden wird ausgelöst. Im Fall eines Schülers mit einer Note von 59 wird die erste Aussage zu False ausgewertet, sodass das Programm fortfährt, die Ausgabe zu der else-Anweisung auszuführen: Nicht bestanden.
Da jedes einzelne Objekt in Python entweder als wahr oder falsch ausgewertet werden kann, empfiehlt der PEP 8 Style Guide, keinen Wert mit True oder False zu vergleichen, da dies weniger lesbar ist und häufig ein unerwartetes Boolean zurückgibt. Das bedeutet, dass du vermeiden solltest, if sammy == True: in deinen Programmen zu verwenden. Vergleiche stattdessen sammy mit einem anderen, nicht-Boolean-Wert, der ein Boolean zurückgibt.
Boolesche Operatoren stellen Bedingungen dar, die verwendet werden können, um das endgültige Ergebnis eines Programms durch Steueranweisungen zu entscheiden.
Schlussfolgerung
Dieses Tutorial behandelt Vergleichs- und logische Operatoren, die zum Booleschen Typ gehören, sowie Wahrheitstabellen und die Verwendung von Booleans zur Steuerung des Programmflusses.
Sie können mehr über andere Datentypen in unserem Tutorial „Datentypen verstehen“ lernen und in unserem Tutorial „Wie man bedingte Anweisungen schreibt“ über bedingte Anweisungen lesen.
Wir haben auch ein kostenloses Python-eBook, Wie man in Python programmiert, das sowohl Anfängern als auch denen, die eine schnelle Referenz benötigen, helfen kann.