Logische Operatoren

Logische Operatoren sind spezielle Symbole, die in der Programmierung verwendet werden, um logische Vergleiche zwischen zwei oder mehreren Ausdrücke zu machen.

In anderen, einfacheren Worten: ein Logischer Operator ist wie eine Behauptung, die entweder wahr oder falsch sein kann. Wenn ich behaupte, dass die Corona Impfung ein Versuch von Bill Gates sei, die Menschheit zu unterjochen, dann ist die Aussage entweder True oder False. :P

Hier eine Tabelle von allen Logischen Operatoren, die es in Python gibt. Einige sollten dir vom Mathe Unterricht bekannt sein:

OperatorBedeutung
andund
oroder
== oder isgleich
!= oder is notnicht gleich
notnicht
<kleiner als
>größer als
<=kleiner gleich
>=größer gleich

Aber keine Sorge, ich gehe über jeden Operator und gebe dir ein Beispiel, wie man es benutzt.

and

print(True and False)
False

Der "und"-Operator überprüft ob die beiden Werte, links und rechts, True sind.

Zum Beispiel wir wollen überprüfen ob ein Kunde, der Alkohol kaufen möchte, über 18 ist und einen Ausweis mit sich trägt. Nur wenn beides der Fall ist, können wir ihm guten Gewissens Alkohol verkaufen:

is_adult = True
has_passport = False

print(is_adult and has_passport)
False

Aber erst wenn ein Kunde unseren Onlineshop besucht und beides erfüllt, können wir endlich Profit mit unserem Alk machen.

is_adult = True
has_passport = True

print(is_adult and has_passport)
True

or

print(True or False)
True

Der "oder"-Operator überprüft ob links oder rechts True ist. Nur eine der beiden Seiten muss True sein, damit die Aussage als True gilt.

Zum Beispiel in einer Dating App möchte ich mit Personen gematched werden, die entweder Hunde oder Katzen mögen.

likes_cats = True
likes_dogs = False

print(likes_cats or likes_dogs)
True

== is

print(True == False)
print(True is False)
False
False

Der "gleich"-Operator überprüft ob die linke Seite identisch mit der rechten Seite ist. Wir können auch Zahlen und alle anderen Datentypen, die wir noch lernen werden, damit vergleichen. Dabei ist es egal ob wir == oder is schreiben. Benutze das was dir besser gefällt.

my_age = 25
your_age = 28

print(my_age == your_age)

your_age = 25 ## Überschreibe your_age mit 25

print(my_age == your_age)
False
True

!= is not

print(True != False)
print(True is not False)
True
True

Das selbe wie beim "gleich" können wir auch hier machen, aber umgedreht mit dem "nicht-gleich"-Operator. Dieser checkt ob die linke Seite nicht gleich mit der rechten Seite ist. Dabei ist es auch hier egal ob wir != oder is not schreiben. Benutze das was dir besser gefällt.

my_age = 25
your_age = 28

print(my_age != your_age)

your_age = 25 ## Überschreibe your_age mit 25

print(my_age != your_age)
True
False

not

print(not True)
False

Der "nicht"-Operator tut einen "boolischen" Wert (True oder False) umdrehen. So wie wir es oben im Beispiel sehen können, wo True mit not zu False umkonvertiert wird. Schauen wir uns weitere Beispiel des "nicht"-Operator an!

not True  ## -> False
not False ## -> True
not 42    ## -> False
not 0     ## -> True
not -42   ## -> False

Du fragst dich jetzt bestimmt warum not 0 True ist und warum not 42 sowie not -42 False ist. In vielen Programmiersprachen wird die Zahl 0 als False behandelt, während alle anderen Zahlen (sowohl positive als auch negative) als True behandelt werden.

Nun, da alle anderen Zahlen (außer 0) als True gelten, sind sowohl 42 als auch -42 wahr. Wenn wir den "nicht"-Operator auf 42 und -42 anwenden, kehren wir ihre Werte um, daher werden sowohl not 42 als auch not -42 zu False.

Wir können auch sebstverständlich den "nicht"-Operator an Variablen verwenden.

is_r_cool = False
print(not is_r_cool)
True

<

print(42 < 24)
False

Das "kleiner als"-Symbol wird verwendet, um zwei Zahlen miteinander zu vergleichen. Wenn die Zahl auf der linken Seite des Symbols kleiner ist als die Zahl auf der rechten Seite, dann ist die Aussage True oder andernfalls False.

>

print(42 > 24)
True

Das selbe auch beim "größer als"-Symbol.

<=

print(42 <= 24)
False

Das "kleiner gleich"-Symbol tut nicht nur True geben, wenn die linke Seite kleiner ist als die rechte, sondern auch wenn die linke Seite gleich der rechten Seite ist.

print(42 <= 43)
print(42 <= 42)
print(42 <= 41)
True
True
False

>=

print(42 >= 24)
True

Das selbe auch beim "größer gleich"-Symbol.

print(42 >= 43)
print(42 >= 42)
print(42 >= 41)
False
True
True

Im nächsten Kapitel werden wir all diese Operatoren verwenden, um mit Hilfe von if und else in unserem Programm Entscheidungen treffen zu können.

Der Unterschied zwischen is und ==

Der == Operator gibt True zurück, wenn beide Werte, die wir vergleichen wollen, gleich sind, während is kontrolliert ob beide Werte die selbe Memoryadresse haben.

Ok... Ich muss mehr ausholen. Jede Variable, die wir erstellen, und jeder Wert, den wir ihr zuweisen, werden im RAM vom Computer gespeichert. Zum Beispiel dieser Pythoncode hier:

my_age = 27

Der Wert von my_age wird im RAM gespeichert, damit unser Programm sich es auch merken kann und wir in späteren Zeilen darauf zugreifen können, um damit zu rechnen oder es in der Konsole auszugeben:

print(my_age)

Der ganze Prozess, im RAM abspeichern, den Ort, wo es abgespeichert wurde, und dies mit my_age zu verlinken, passiert komplett automagisch im Hintergrund umnd wir müssen uns keine Gedanken drüber machen. Der Ort, die Adresse, wo die Variable im RAM gespeichert wird, nennt man in Programmierfachchinesisch auch "Pointer". Der Pointer zeigt auf die Stelle im RAM, in der die Variable existiert.

Hier nochmal visualisiert:

a = 1000
b = "Hello"
c = 1000
d = a + c

Dieser Pythoncode sieht dann ganz abstrakt im RAM so aus:

Wie du sehen kannst, haben a und c, obwohl die den selben Wert haben, unterschiedliche Pointer. Das können wir auch sehen wenn wir is benutzen:

print(a == c)
print(a is c)
True
False

Das selbe, aber nur umgedreht, gilt natürlich auch für is not und !=.

print(a != c)
print(a is not c)
False
True