Python 3.2 – Bedingung und Wahrheit

Wir haben uns in Modul 2 bereits mit Booleans beschäftigt. In der vorliegenden Lektion wollen wir dieses Wissen wiederholen und vertiefen.

Booleans

Wie wir bereits gelernt haben, sind Booleans ein eigener Datentyp, der nur zwei Werte annehmen kann:

  • True
  • False

Jede Kondition evaluiert zu einem dieser beiden Werte. Ein einfache Kondition sieht z.B. wie folgt aus:

3 > 2

Diese Kondition evaluiert zu „True“. Wir können diesen Wert auch einer Variablen zuweisen:

i = 3 > 2 

Booleans sind sehr wichtig, da ihr Wert die Entscheidungsbasis für if-Statements und while-Loops darstellt.

Boolean-Operatoren

Wie die meisten Programmiersprachen besitzt Python eigene Operatoren, um Booleans zu verknüpfen. Diese Operatoren sind

  • not
  • and
  • or

Diese Operatoren sind dabei in der Reihe ihrer Präferenz gelistet. Präferenz bedeutet in dem Fall einfach, dass not Vorrang vor and hat und and wiederum Vorgang vor or. Zu jedem dieser Operatoren gibt es sogenannte Wahrheitstabellen. Wahrheitstabellen geben an, wie das Ergebnis der Verknüpfung zweiter Operanden mit einem Booleschen Operator ist.

Wir werden uns einige Beispiele ansehen, um dies zu verdeutlichen. Dazu verwenden wir den Vergleichsoperator == auf den wir später noch ausführlicher eingehen. Momentan reicht es zu wissen, dass wir damit zwei Werte vergleichen können. Sind die Werte gleich, evaluiert der Ausdruck zu True, sonst zu False.

Code-Beispiel 1: and (UND)

if (2 == 2) and (3 == 3):
    print("Ja. True")
Code ausprobieren ×

Beide Ausdrücke evaluieren zu True und sind mit and verknüpft. True UND True evaluieren wiederum zu "True", was in dem Fall dazu führt, dass die Kondition unseres if-Statements wahr ist. Dadurch wird das print-Statement ausgeführt.

Code-Beispiel 2: or (ODER)

if (2==4) or (1==1):
    print("Ja. True")
Code ausprobieren ×

Der folgende Ausdruck evaluiert zu false:

 (2==4) 

Und dieser Ausdruck evaluiert zu true:

 (1==1) 

Wenn bei einer OR-Verknüpfung einer der beiden verknüpften Wahrheitswerte "True" ist, evaluiert die Bedingung auch "True". Daher wird erneut das print-Statement ausgeführt.

Code-Beispiel 3: not (NICHT)

Der not-Operator ändert den Wahrheitswert eines Booleans in den jeweils anderen.

i = False
print(not(i))
Code ausprobieren ×

Dadurch lässt sich der Wahrheitswert eines beliebigen Booleans ändern.

Code-Beispiel 4: and und or

if (2==2) and (7==2) or (4==4):
    print("True")
Code ausprobieren ×

Dieser Ausdruck ist etwas komplizierter, lässt sich aber mit unseren Kenntnissen über Operatorpräferenz relativ leicht auflösen.Wir wissen, dass and vor or evaluiert wird. Damit lässt sich der Ausdruck folgendermaßen lesen:

if ((2==2) and (7==2)) or (4==4):
    print("Ja. True")
Code ausprobieren ×

bzw. noch einfacher:

if (True) and (False)) or (True):
    print("Ja. True")
Code ausprobieren ×

(True) and (False) ergibt False, damit lässt sich der Ausdruck weiter vereinfachen:

if (False) or (True):
    print("Ja. True")
Code ausprobieren ×

(False) or (True) ergibt True. Damit wird auch bei diesem Ausdruck das print-Statement ausgeführt.

Anfängerfehler bei Booleans

Booleans und ihre Regeln können am Anfang etwas komplex wirken. Daher solltest du besonders am Anfang genau darauf achten, dass deine Konditionen und Booleans auch wirklich den geplanten Fall abdecken.

Ein beliebter Anfängerfehler ist die folgende if-Abfrage:

x=4
if (x==2 or 3):
    print("X ist zwei oder drei")
Code ausprobieren ×

Hie wollte der Programmierer überprüfen, ob x entweder den Wert Zwei oder den Wert drei hat.

Diese Ausdruck wird allerdings immer zu "True" evaluieren, da der Ausdruck (3) nach den in Python implementierten Regeln immer "True" ergibt - wir erinnern uns, dass von den Integerzahlen lediglich 0 zu false evaluiert.

Die korrekte Abfrage hätte lauten müssen:

if (x==2) or (x==3):
    print("X ist zwei oder drei")
Code ausprobieren ×

Code-Aufgabe - Jetzt bist du dran:

Der König will benachrichtigt werden, wenn es am nächsten Tag regnet oder schneit. Du baust dafür eine einfache Wettervorhersage.

  1. Erstelle ein Tastatur-Input mit einem Text z.B. "Wie wird das Wetter morgen? ".
  2. Prüfe mit dem If-Befehl ob diese Eingabe das Wort "Regen" oder "Schnee" enthält.
  3. Wenn die Bedingung zu "True" evaluiert, soll ein Text ausgegeben werden "Morgen soll es regnen oder schneien"

Code-Aufgabe - Lösung:

Wenn du nicht weiterkommst, findest du hier die Komplettlösung zu der Aufgabe. Du kannst den folgenden Code in den Online-Editor kopieren & einfügen, um ihn zu testen.

[lp_spoiler title="Spoiler - Lösung anzeigen"]

eingabe = input("Wir wird das Wetter morgen? ")

if (eingabe == "Regen") or (eingabe == "Schnee"):
    print("Morgen soll es regnen oder schneien")
Code ausprobieren ×

[/lp_spoiler]

Zusammenfassung:

In dieser Lektion haben wir unser Wissen zu Booleans aufgefrischt. Außerdem haben wir gelernt, in welcher Reihenfolge Python Booleans evaluiert. Wir haben zudem gelernt wie wir Booleans mit den entsprechenden logischen Operatoren verknüpfen können.

Wir hoffen, du hattest Spaß und wir sehen uns in der nächsten Lektion wieder.