Boolsche Ausdrücke, Vergleichsoperatoren und der Datentyp boolean
Neben Ausdrücken deren Wert eine Zahl oder ein Text ist, können wir auch Ausdrücke schreiben, die einen Wahrheitswert (also Wahr oder Falsch) ergeben. Diese werden als boolsche Ausdrücke bezeichnet. Genau wie mit Zahlen können wir auch diese Werte in Variablen speichern, und mithilfe von Operatoren zu komplexen Ausdrücken zusammensetzen.
Im folgenden Video werden diese Ausdrücke im Detail besprochen.
Nach dem schauen des Videos sollten Sie nun die wichtigsten Aspekte kennen, die Sie benötigen um boolsche Ausdrücke zu schreiben. Im folgenden Abschnitt ergänzen wir diese noch durch einige Details und geben Ihnen eine Übersicht über die in Python verfügbaren Vergleichsoperatoren und logischen Operatoren.
Typannotation für boolsche Ausdrücke
Wie wir im Video gesehen haben, gibt es in Python einen speziellen Datentyp für Wahrheitswerte, nämlich den Typ bool
. Wenn wir Variablen definieren, die einen Wert vom Typ bool
enthalten, können wir diese mit der Typannotation bool
versehen. Das sieht dann zum Beispiel so aus:
a: bool = True
b: bool = not a
Wie wir im Artikel zum Thema Typannotationen letzte Woche besprochen haben, sind diese Typannotationen optional und nur informativ. Wir möchten Sie aber an dieser Stelle nochmals ermutigen, diese hinzuschreiben um die Lesbarket Ihres Codes zu erhöhen. Sie helfen sich damit auch selbst, sich im Code zurechtzufinden und Fehler zu vermeiden.
Übersicht der Vergleichsoperatoren und der logischen Operatoren
In der nachfolgenden Tabelle finden Sie alle in Python verfügbaren Vergleichsoperatoren.
Operator | Erklärung |
---|---|
== | Vergleich auf Gleichheit |
!= | Vergleich auf Ungleichheit |
> | Grösser als |
>= | Grösser oder gleich |
< | Kleiner als |
<= | Kleiner oder gleich |
Die wichtigsten logischen Operatoren in Python sind or
, and
und not
. Diese verhalten sich gemäss der folgenden Wahrheitstabelle.
b1 | b2 | b1 or b2 | b1 and b2 | not b1 |
---|---|---|---|---|
False | False | False | False | True |
False | True | True | False | True |
True | False | True | False | False |
True | True | True | True | False |
Rangfolge der Operatoren (Operatorenpräzedenz)
Aus der Mathematik kennen wir die Punkt- vor Strich-Regel, die besagt, dass Multiplikation und Division jeweils vor Addition und Subtraktion ausgeführt wird.
Ähnliche Regeln gelten auch für logische Operatoren. Der not
Operator wird dabei immer als erster ausgeführt, danach die and
und am Schluss folgt die Auswertung von or
. Wenn Sie eine andere
Auswertungsreihenfolge möchten, können Sie diese durch entsprechende Klammersetzung erzwingen.
Wenn Sie komplexere Ausdrücke schreiben, sollten Sie in jedem Fall immer entsprechend Klammern setzen. Damit helfen Sie dem Leser des Codes den Ausdruck zu verstehen, ohne dass dieser auch noch alle Präzedenzregeln im Kopf haben muss.
Experimentieren Sie doch gleich selbst damit. Testen Sie insbesondere die nachfolgenden Aspekte aus.
Experimente
- Können Sie statt
b = (5 > 3)
auchb = 5 > 3
schreiben?- Ergibt es denselben Wert?
- Was ist der Nachteil?
- Was ist der Typ eines Wahrheitswerts in Python? Also der Typ der vom Befehl
type
ausgegeben wird (type
wurde in Typen der Woche 1 eingeführt). - Ergänzen Sie den Code die entsprechenden Typannotationen.
- Definieren Sie eine Variable und weisen dieser einen Wert zu. Schreiben Sie dann einen Ausdruck, der True zurückgibt wenn der Wert der Variablen grösser als 0 ist und kleiner als 99. Testen Sie Ihren Ausdruck für verschiedene Werte der Variablen.
- Definieren Sie einen komplexen boolschen Ausdruck wie
not a or b and b or a
und studieren Sie anhand von diesem die Präzedenzregeln. Setzen Sie die richtigen Klammern, so dass deutlicher wird was passiert.
Fragen und Kommentare
Haben Sie Fragen oder Kommentare zu diesem Artikel? Nutzen Sie das Forum und helfen Sie sich und Ihren Mitstudierenden dieses Thema besser zu verstehen.