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:
Operator | Bedeutung |
---|---|
and | und |
or | oder |
== oder is | gleich |
!= oder is not | nicht gleich |
not | nicht |
< | 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