Bereits in zwei der vergangenen Blogbeiträge haben wir in Python Operatoren unterschiedlicher Art kennengelernt. Durch den Einsatz logischer Operatoren, die wir heute thematisieren werden, können wir mehrere Vergleiche miteinander in Beziehung setzen. Was das genau bedeutet und weshalb das sehr praktisch sein kann, wirst du in den folgenden Zeilen erfahren.
Inhaltsverzeichnis
1. Die verschiedenen Arten der Python Operatoren
Wie bereits eingangs erwähnt, bist du im bisherigen Verlauf dieser Tutorialreihe schon einigen Operatoren begegnet. Zum einen waren das die arithmetischen Operatoren, zu welchen unter anderem der Plus-, Minus-, Mal- und Geteilt-Operator zählen. Zum anderen waren das die Vergleichsoperatoren, die wir besonders im Kontext der if-Anweisungen sehr nutzbringend bei der Erstellung von Bedingungen einsetzen können.
Im heutigen Beitrag werden wir uns mit den sogenannten logischen Operatoren befassen, einer weiteren Gruppe der Python Operatoren. Bevor ich dir die einzelnen Vertreter der Reihe nach vorstelle, sehen wir uns zunächst einmal ein kleines Beispiel an, welches die Nützlichkeit der logischen Operatoren demonstrieren soll.
2. Die Problemstellung bei mehr als einer if-Anweisung
In unserem Beispiel möchten wir eine einfache Lotterie programmieren, in der der Nutzer dreimal hintereinander dazu aufgefordert werden soll, eine Zahl zwischen 1 und 49 einzugeben. Umsetzen können wir das ganz einfach wie folgt:
Nun möchten wir mithilfe eines if-else Konstrukts prüfen, ob der Nutzer die korrekten Zahlen getippt hat. Als Gewinnzahlen legen wir die folgenden Zahlen fest:
Wenn wir diese jetzt prüfen möchten, setzen wir das nach unserem aktuellen Wissensstand folgendermaßen um:
Testen wir das Programm nun, erkennen wir, dass die Logik grundsätzlich funktioniert.
Das Problem ist allerdings, dass der Code so ziemlich unübersichtlich aussieht. Schließlich haben wir aktuell drei if-Anweisungen, die ineinander verschachtelt sind und benötigen zu jedem if-Zweig einen zugehörigen else-Zweig. Deutlich schöner und übersichtlicher wäre es an dieser Stelle, diese komplexere Bedingung mithilfe einer einzigen if-Anweisung umzusetzen.
Doch wie gelingt uns das? Die Antwort auf diese Fragen liefern uns in Python die logischen Operatoren. Diese ermöglichen uns, mehrere Bedingungen miteinander zu verknüpfen.
3. Übersicht: Logische Operatoren
Werfen wir zunächst einmal kurz einen Blick auf die Tabelle, in welcher die logischen Operatoren in Python samt Beispiel aufgelistet sind:
Genau wie die Vergleichsoperatoren resultieren auch die logischen Operatoren nach der Auswertung in einem Wahrheitswert, der entweder True oder False sein kann.
3.1. Das logische ODER (or)
In der ersten Zeile sehen wir das logische ODER. Anhand des nebenstehenden Beispiels können wir die Funktionsweise dieses Python Operators erkennen. Wir sehen dort zwei Klammern, in welchen sich jeweils ein Ausdruck befindet. Die Klammern sind über ein logisches ODER miteinander verknüpft. In den Ausdrücken innerhalb der Klammern sehen wir wieder die Anwendung unterschiedlicher Vergleichsoperatoren. Der logische ODER-Operator funktioniert nun folgendermaßen:
- 1Zuerst wertet das Programm die beiden Ausdrücke innerhalb der Klammern aus.
- 2Da es sich bei den Ausdrücken um Vergleiche handelt, erhält man bei beiden Ausdrücken als Ergebnis den Wert True oder False.
- 3Der logische ODER-Operator prüft nun, ob mindestens einer der beiden Ausdrücke True ergibt. Sollte tatsächlich nur einer der Ausdrücke True ergeben, liefert der logische ODER-Operator als Gesamtergebnis ebenfalls True zurück.
Deshalb nennt man diesen Operator in Python auch logisches ODER, weil lediglich einer der beiden Operanden True liefern muss, damit das logische ODER ebenfalls zu True ausgewertet wird. Sollten beide Operanden, also in diesem Fall sowohl a < b als auch c == d den Wert True zurückliefern, liefert das logische ODER ebenfalls True zurück. Nur wenn beide Operanden False ergeben, wird das logische ODER ebenfalls zu False ausgewertet.
3.2. Das logische UND (and)
In der nächsten Zeile sehen wir das logische UND. Wenn der Rückgabewert hier True ergeben soll, müssen beide Operanden auf das Beispiel bezogen sowohl a < b als auch c == d, True zurückliefern. Wenn nur einer der beiden Ausdrücke False ergibt, wird der Gesamtausdruck durch das logische UND ebenfalls zu False ausgewertet. Sind beide Operanden False, liefert das logische UND auch den Wert False.
3.3. Das logische NICHT (not)
In Zeile drei sehen wir noch das logische NICHT, welches mit dem Wort „not“ dargestellt wird. Das logische NICHT negiert immer den nachfolgenden Ausdruck. Sollte eine Behauptung beispielsweise True sein, wird diese unter Anwendung der logischen Negierung am Ende False. Gleiches gilt auch andersherum: Ist die Behauptung False, liefert sie durch das logische NICHT True zurück.
4. Logische Python Operatoren in der Praxis
In der Praxis können wir in Python Operatoren dieser Art dazu einsetzen, komplexere Vergleiche zusammenzustellen. Das if-else-Konstrukt mit den ganzen Verschachtelungen aus unserem Beispiel können wir nun dank der logischen Operatoren mit nur einem einzigen if-else-Konstrukt nachbauen:
Für unser Beispiel habe ich das logische UND gewählt, da jede Bedingung des Ausdrucks erfüllt sein muss. Schließlich hat man die Lotterie erst dann gewonnen, wenn alle Zahlen richtig sind.
Wenn wir das Programm nun noch einmal testen, erkennen wir, dass es funktioniert:
Da du nun auch die drei logischen Python Operatoren kennengelernt hast, würde ich dir empfehlen, nun selbst deine Entwicklungsumgebung zu öffnen und mit verschiedenen Beispielbedingungen zu experimentieren. So wird dir die Funktionsweise dieser Operatoren am schnellsten bewusst und mit etwas Übung wirst du diese bald aus dem Effeff beherrschen. Das ermöglicht dir, jede noch so komplexe Bedingung zu bauen, was den Aufwand definitiv Wert sein wird.