• Keine Ergebnisse gefunden

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.