2.5 Ausdrücke und Operatoren
2.5.4 Logische Ausdrücke
Aussagen, denen man einen Wahrheitswert, nämlich ‘wahr’ oder ‘falsch’ zuordnen kann, bezeichnet man als logische Aussagen. Eine Aussage hat den Wahrheitswert wahr (True) falls sie zutrifft und falsch (False) falls sie nicht zutrifft. Bei der Auswertung von belie-bigen logischen Aussagen hilft die Theorie der Aussagenlogik.
Sei W(A) der Wahrheitswert der Aussage A:
W( A ) = True , falls die Aussage A wahr ist W( A ) = False , falls die Aussage A falsch ist
Die beiden Wahrheitswerte ‘True’ und ‘False’ stellen fest in Python eingebaute Daten-typen dar, und müssen deswegen genau so geschrieben werden:
Beispiel: Direkte Zuweisung von Wahrheitswerten
var1 = True var2 = False
Darüber hinaus weist Python auch jedem anderen Objekt einen Wahrheitswert zu. Jedes Objekt wird als ‘True’ angesehen, mit den folgenden Ausnahmen:
Beispiel: Objekte oder Werte, die als “False” interpretiert werden
None False
0 # Die Null jedes numerischen Typen [], (), "" # Eine leere Sequenz
Logische Operatoren
Logische Ausdrücke können mit Hilfe von Logischen Operatoren aus Primitiven Objekten gebildet werden.
Logische Vergleichsoperatoren
Zum Vergleich von Zahlen und Buchstaben gibt es 6 Vergleichsoperatoren, die in den folgenden Tabellen gezeigt werden. Vergleichsoperatoren werden auch Relationelle Ope-ratoren genannt.
Tabelle 2.7: Zahlen-Vergleichsoperatoren
Operator Bezeichnung Beispiel Beschreibung oder Bemerkung
== Gleich >>> 10 == 10 True Liefert ‘True’ genau dann, wenn beide Seiten des Ausdrucks logisch äquivalent sind
!= Ungleich >>> 200 != 200 False
Liefert ‘True’ genau dann, wenn die beiden Operanden nicht gleich sind
> Größer >>> 1234 > 0 True Liefert ‘True’ genau dann, wenn der linke Operand größer als der rechte Operand ist
< Kleiner >>> 123 < 0 False Liefert ‘True’ genau dann, wenn der linke Operand kleiner als der rechte Operand ist
>= Größer oder Gleich
>>> 42 >= 42 True Liefert ‘True’ genau dann, wenn der linke Operand gleich oder größer als der rechte Operand ist
<= Kleiner oder Gleich
>>> 42 <= 21 False
Liefert ‘True’ genau dann, wenn der linke Operand gleich oder kleiner als der rechte Operand ist
Tabelle 2.8: String-Vergleichsoperatoren
Operator Bezeichnung Beispiel Beschreibung oder Bemerkung
== Gleich "python" == "python"
True
Liefert ‘True’ genau dann, wenn beide Seiten des Ausdrucks logisch äquivalent sind
!= Ungleich "c++" != "c++" False Liefert ‘True’ genau dann, wenn die beiden Operanden nicht gleich sind
> Größer "Zebra" > "Affe" True Liefert ‘True’ genau dann, wenn der linke Operand alphabetisch größer als der rechte Operand ist
< Kleiner "Yacht" < "Beta"
False
Liefert ‘True’ genau dann, wenn der linke Operand alphabetisch kleiner als der rechte Operand ist
>= Größer oder Gleich
"CIS" >= "CIS" True Liefert ‘True’ genau dann, wenn der linke Operand alphabetisch gleich, oder größer als der rechte Operand ist
<= Kleiner oder Gleich
"Zimt" <= "Anis"
False
Liefert ‘True’ genau dann, wenn der linke Operand alphabetisch gleich oder kleiner als der rechte Operand ist
Diese 6 logischen Vergleichsoperatoren können auch auf alle anderen Standartdatentypen angewendet werden:
>>> [1,2,3] == [1,2,3]
True
>>> {"Name": "Peter"} == {"Name": "Peter"}
True
>>> [9] != ["haus"]
True
>>> {"Name": "Peter"} != {"Name": "Peter"}
False
>>> [9,9] > [2,2]
True
Wenn Sequenzen verglichen werden, so werden die Elemente mit gleichem Index paarweise verglichen.
Logische Verknüpfungsoperatoren
Neben den Logischen Vergleichsoperatoren gibt es die Verknüpfungsoperatoren, die meh-rere Wahrheitswerte oder Logische Ausdrücke zu einem neuen Wahrheitswert verknüpfen.
Außerdem kann jede Logische Aussage negiert werden. Python benutzt an dieser Stelle vorgeschriebene Schlüsselwörter:
and, or, not
Wenn zwei Aussagen Aund Bverknüpft werden, ergibt sich folgende Wahrheitstabelle:
Aussage Aussage Logisches Und Logisches Oder
A B A and B A or B
True True True True
True False False True
False True False True
False False False False
Die Negation eines Wahrheitswertes liefert genau sein Gegenteil:
Aussage Negation
A not(A)
True False False True
Beispiele für Logische Operatoren:
var1 = True var2 = False
>>> var1 and var2
False
>>> var1 or var2
True
>>> not(var2)
True
>>> (2 == 2) and ("hallo" == "hallo")
True
>>> (not(2 < 1)) and (("Python" > "ABC") or (var1))
True
Logische Inhaltsoperatoren
Möchte man Herausfinden, ob bestimmte Elemente in einer Sequenz vorkommen, so ist das in Python ganz einfach: Die Schlüsselwörter
in, not in
liefernTruebzw.False, je nachdem, ob sich das Element in der Sequenz befindet:
Beispiele: Logische Inhaltsoperatoren
>>> "a" not in "Gemüse"
True
>>> 3 in [1,2,3]
True
>>> "Python" in ["Monty","Grail","Frenchman"]
False
>>> (12,17) in [(1,3),(12,17),(45,45)]
True
>>> 3 not in [1,2,3]
False
Die Operatorenin undnot in werden auch Membership Operators genannt.
Logische Identitätsoperatoren
is, is not
Die beiden logischen Identitätsoperatoren vergleichen, ob es sich bei zwei Variablen um Referenzen auf die selbe Instanz handelt. Dabei wird nicht verglichen, ob die Werte der Instanzen gleich sind, sondern, ob die Referenzen der Variablen auf die selbe Instanz zeigen.
Variablen mitimmutableDatentypen referenzieren demzufolge ihrem Design nach immer die selbe Instanz, falls ihr Wert gleich ist, Variablen mit mutable Datentypen hingegen können sich auf verschiedene Instanzen dieses Typen beziehen:
Beispiel: is-Vergleich mit mutable-Datentyp
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> # mutable Daten => unterschiedliche Objekte und Adressen
>>> print(hex(id(a)))
Beispiel: is-Vergleich mit immutable-Datentyp
>>> a = 5
>>> b = 5
>>> # immutable Daten => selbe Objekte und Adressen
>>> print(hex(id(a)))
Im besonderen der Vergleich var is Nonekann bedenkenlos verwendet werden, da None
ein immutable Datentyp ist.