Operatoren#

Midjourney: Caligraphic Equations

Clarity in thought, like elegance in mathematics, arises not from abundance but from precision.

— Blaise Pascal

Folien/PDF#

Anweisungen#

Bei der Programmierung schreibt man Code der formal aus einem Syntax und Semantik besteht. Dieser Code wird formal weiter unterteil in:

📘 Definition: Anweisung

Eine Anweisung (engl. statement) stellt eine in dem Syntax einer Programmiersprache formulierte einzelne Vorschrift dar, die im Programm nacheinander auszuführen ist.

📘 Definition: Ausdrücke

Eine besondere Form von Anweisungen sind Ausdrücke (engl. expression) welche immer einen Wert zurückgeben und somit einen Datentypen haben.

📘 Definition: Operator

Ein Operator sind Teile von Ausdrücke und sind ein Symbol oder ein Schlüsselwort, das dem Compiler oder Interpreter mitteilt, eine bestimmte Operation auf Werte auszuführen.

Bei einer einer einfachen Variablenzuweisung steht der Ausdruck zum Beispiel auf der rechten Seite des Zuweisungsoperators und der Variablenname auf der linken Seite, zum Beispiel:

Variablenname = Ausdruck

Arithmetische Operatoren#

Arithmetische Operatoren führen die bekannten mathematischen Operationen aus. Sie werden mit numerischen Werten verwendet, um allgemeine mathematische Operationen auszuführen.

Operator

Beispiel

Wirkung

Addition

x + y

10 + 3 (Ergebnis: 13)

Subtraktion

x - y

10 - 3 (Ergebnis: 7)

Multiplikation

x * y

10 * 3 (Ergebnis: 30)

Division

x / y

10 / 3 (Ergebnis: 3.33)

Ganzzahl-Division

x // y

10 // 3 (Ergebnis: 3)

Modulo-Operator

x % y

10 % 3 (Ergebnis: 1)

Potenzierung

x ** y

10 ** 3 (Ergebnis: 1000)

Zuweisungsperatoren#

Zuweisungsoperatoren weisen Variablen Werte zu. Python verwendet für alle arithmetischen Operatoren die abkürzende Zuweisung, es gibt jedoch keine Inkrementierung oder Dekrementierung wie in anderen Sprachen.

Bei der Zuweisung x = y wird der Wert der Variablen y (rechte Seite) der Variablen x (linke Seite) zugewiesen. Bei abkürzenden Zuweisungen wird jeweils eine Operation auf dem Wert einer Variablen ausgeführt und dieser neue Wert erneut der Variablen zugewiesen.

Operator

Beispiel

Wirkung

Zuweisung

x = y

Variable x erhält den Wert y

Abkürzende Addition

x += 4

x = x + 4 # Variablen x wird um 4 erhöht

Abkürzende Multiplikation

x *= 4

x = x * 4 # Variablen x wird mit 4 multipliziert

Abkürzende Division

x /= 4

x = x / 4 # Variablen x wird durch 4 dividiert

Abkürzende Ganzzahl-Division

x //= 4

x = x // 4 # Variablen x wird durch 4 ohne Rest dividiert

Abkürzende Modulo

x %= 4

x = x % 4 # Der Rest der Division von Variablen x durch 4

Anwendung von Zuweisungs- und arithmetischen Operatoren#

Operatoren werden in Programmiersprachen verwendet um zwei oder mehrere Werte oder Variablen miteinander zu verknüpfen. Die arithmetischen Operatoren *, -, *, / aus der Mathematik gibt es auch in Python.

a = 1 + 1
print(a)
2

Die Operationen funktionieren genauso mit Variablen oder gemischt.

a = a + 1
print(a)
3

In diesem Beispiel ist die erste Eingangsvariable a identisch mit der Ergebnisvariable. In diesem Fall bietet Python auch die Kurzform an wo der Operator vor dem Zuweisungsoperator =

a += 1
print(a)
4
a *= 2
print(a)
8

Hierbei bestimmen Klammern auch die Berechnungsreihenfolge, genauso wie in der Mathematik und können das Ergebnis beeinflussen. So, sind die folgenden beiden Ausdrücke nicht identisch:

c1 = (6 + a) * (-2)
print(c1)
-28
c2 = 6 + a * -2
print(c2)
-10

Vergleichsoperatoren#

Vergleichsoperatoren vergleichen zwei Werte und liefern wahr oder falsch als Ergebnis. Zum Beispiel testet a == b ob a gleich b ist, und liefert je nachdem wahr oder falsch zurück, und a != b testet, ob a ungleich b ist.

Vergleichsoperatoren verknüpfen zwei Variablen / Werte, und das Ergebnis wird als wahr oder falsch ausgewertet.

Bei der Zuweisung x = y wird der Wert der Variablen y (rechte Seite) der Variablen x (linke Seite) zugewiesen. Bei abkürzenden Zuweisungen wird jeweils eine Operation auf dem Wert einer Variablen ausgeführt und dieser neue Wert erneut der Variablen zugewiesen.

Operator

Beispiel

Wirkung

Gleich

x == y `

wahr, wenn x gleich y ist

Ungleich

x != y

wahr, wenn x ungleich y ist

Größer

x > y

wahr, wenn x größer als y ist

Kleiner

x < y

wahr, wenn x kleiner als y ist

Größer gleich

x >= y

wahr, wenn x größer gleich y ist

Kleiner gleich

x <= y

wahr, wenn x kleiner gleich y ist

Identitätsoperatoren#

Identitätsoperatoren vergleichen Objekte. Falls z.B. x = [1, 2, 3] gilt, also x eine Liste ist, dann liefert type(x) is list wahr, und type(x) is not list ist falsch. Sie prüfen dabei, ob zwei Objekte auf denselben Speicherbereich zeigen. x is y gibt wahr zurück, wenn beide Variablen dasselbe Objekt sind, d.h. auf denselben Speicherbereich zeigen.

Operator

Beispiel

Wirkung

Gleich

x is y

wahr, wenn beide Variablen dasselbe Objekt sind.

Nicht gleich

x is not y

wahr, wenn die Variablen nicht dasselbe Objekt sind.

Logische Operatoren#

Logische Operatoren kombinieren boolesche Ausdrücke, die dann als wahr oder falsch ausgewertet werden. Z.B. wird hier die Variable is_teenager = (alter > 13) and (alter < 19) als wahr ausgewertet, wenn der Wert der Variablen alter gleich 14 ist.

P und Q stehen für logische Ausdrücke, z.B. P = (x > 10) und Q = (x < 20).

Operator

Beispiel

Wirkung

Logisches Und

P and Q

Gibt wahr (1) zurück, wenn die Ausdrücke P und Q beide wahr sind

Logisches Oder

P or Q

Gibt wahr (1) zurück, wenn einer der Ausdrücke P oder Q wahr ist

Logische Verneinung

not P

Verneint den Ausdruck P: aus wahr wird falsch, aus falsch wird wahr

Anwendung von Vergleichs- und Logischen Operatoren#

Um zu prüfen, ob der Wert zweier Variablen gleich ist, wird in den meisten Programmiersprachen nicht das Gleichheitszeichen = verwendet, das es dort meist als Zuweisungsoperator definiert ist (und somit die erste Variable überschreiben würde). In Python nutzt man deshalb ein doppeltes Gleichheitszeichen == (mathematisch für exakt das gleiche). In unserem Beispiel ist c1 nicht gleich c2, also die folgende Aussage falsch.

c1 == c2
False

Für Ungleichheit wird in Python der != Operator verwendet

c1 != c2
True

Auch die mathematischen Operatoren für kleiner <, kleiner gleich , größer <, und größer gleich werden unterstützt

c1 < c2
True
c1 <= c2
True
c1 > c2
False
c1 >= c2
False

Boolesche (logische) Werte werden in Python nicht durch die üblichen Operatoren für UND &, ODER |, NOT ~ kombiniert, sondern als and, or, not ausgeschrieben. Das Größergleich ist z.B. identisch mit der Bedingung

c1 > c2 or c1 == c2
False

Bitweise Operatoren#

Bitweise Operatoren führen bitweise Operationen auf ganzzahligen Operanden aus. D.h. die Operanden werden in ihre bitweise Darstellung konvertiert, z.B. x = 5 = 0101, y = 3 = 0011, und dann wird jedes Bit im Operanden x mit dem Bit an der passenden Position im Operanden y verknüpft.

Operator

Beispiel

Wirkung

Bitweises Und

x & y

Ergebnisbit ist 1, wenn beide Bits 1 sind.

Bitweises Oder

x | y

Ergebnisbit ist 1, wenn mindestens eines der Bits 1 ist.

Bitweises Entweder-Oder (XOR)

x ^ y

Ergebnisbit ist 1, wenn genau eines der Bits 1 ist.

Bitweises Nicht

˜ x

Gibt das Einerkomplement von x zurück.

Shift-right

x >> n

Bits in x werden um n Positionen nach rechts geschoben.

Shift-left

x << n

Bits in x werden um n Positionen nach links geschoben.

Die üblichen logischen Operatoren UND &, ODER |, sowie XOR ^ sind für bitweise Verknüpfung reserviert. Dies benutzt man nur sehr selten, bei bestimmten Berechnungen oder beim Masking.

a = 10 # binär 1010
b = 4  # binär 0100
c = a & b
print(c) # binär 0000
0
c = a | b
print(c) # binär 1110
14

Mit den Linksverschiebungs- << und Rechtsverschiebungs-Operatoren >> lassen sich auch sehr schnelle Berechnungen realisieren. Eine Multiplikation mit 4 ist zum Beispiel eine Linksverschiebung um 2, eine Division um 4 hingegen eine Rechtsverschiebung um 2. Dies nuten Compiler intern, um Berechnungen zu optimieren.

c = a << 2
print(c)
40
d = c >> 2
print(d)
10

Überladen von Operatoren#

Die arithmetischen Operatoren + und - sind in Python überladen, d.h. man kann sie auch auf nicht numerische Datentypen anwenden. Um mehrere Strings zu verbinden kann man zum Beispiel schreiben:

satz = "Der "+ "Ball " + "ist " + "rund."
print(satz)
Der Ball ist rund.

Dies funktioniert auch für Listen

liste1 = [1,2,3]
liste2 = [2,3,4]

liste12 = liste1 + liste2
print(liste12)
[1, 2, 3, 2, 3, 4]

oder als Subtraktion für Mengen

menge1 = {1,2,3}
menge2 = {2,3,4}

menge12 = menge1 - menge2
print(menge12)
{1}
⚠️ Achtung: Hierbei ist zu beachten, dass die Operatoren ihre semantische Bedeutung ändern, je nachdem welche Datentypen kombiniert werden. So ist die Addition zweier Strings `str` formal eine `concat` in einen neuen String. Bei der Liste bedeutet `+` das Kopieren der ersten Liste in eine neue, welche dann mit `expand` um den Inhalt der nächsten Liste erweitert wird. Bei beiden ist der Operator für die Subtraktion `-` nicht definiert. Bei einem Set ist `+` nicht definiert, dafür aber `-` um Differenzmenge zu bestimmen.

Ferner müssen bei Python beide verknüpften Werte immer den gleichen Datentypen haben. So kann man nicht, wie in Java oder JavaScript, ein String und eine Nummer kombinieren, sondern muss die Nummer zuerst in einen String konvertieren (casting).

"Der Wert ist " + 1  # geht nicht
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[22], line 1
----> 1 "Der Wert ist " + 1  # geht nicht

TypeError: can only concatenate str (not "int") to str
"Der Wert ist " + str(1)  # geht
'Der Wert ist 1'

Dies hat damit zu tun, dass bestimmte Statements sonst mehrdeutig wären. So ist hier unklar, ob das Ergebnis ein String sein soll oder eine Zahl.

"1" + 1  # geht nicht
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[24], line 1
----> 1 "1" + 1  # geht nicht

TypeError: can only concatenate str (not "int") to str

Durch Casting der Werte in den richtigen Typ wird das Statement eindeutig

int("1") + 1  # geht
2

Mitgliedsoperatoren#

Mitgliedsoperatoren prüfen, ob ein Objekt Mitglied einer Liste ist, z.B. prüft 4 in [1,2,3], ob 4 in der Liste enthalten ist.

x steht hier für ein beliebiges Objekt, list für eine Auflistung.

Operator

Beispiel

Wirkung

enthalten in

x in list

wahr, wenn x in der Liste list enthalten ist.

nicht enthalten

x not in list

wahr, wenn x nicht in der Liste list enthalten ist.

Tips zur Anwendung#

Mathematische Operatoren haben auch eine Kurzversion die vor dem Zuweisungsoperator = stehen kann: z.B. a += 1 entspricht a = a + 1, a *= 2 ist äquivalent zu a = a*2.

i = 1
i *= 2
i *= 3
i  # 6
6

Logische Operationen funktionieren meistens wie erwartet. Insbesondere >, <, >= und <=. Wie in mehreren anderen Sprachen wird Gleichheit mit doppelten Gleichheitszeichen == getestet. Ungleichheit kann mit != getestet werden, und die logische Negation ist not:

a = 1
a > 1  # False
a >= 1  # True
a == 1  # True
a != 1  # False
not a == 1  # False
False

Python unterstützt auch etwas weniger verbreitete, aber äußerst praktische Mehrweg-Vergleichsoperationen, zum Beispiel

0 < a < 2  # true
True

Quiz#

--- shuffleQuestions: true shuffleAnswers: true --- ### Was sind Binäre Zahlen? > Mehrere Antworten sind möglich. Binär leitet sich von binarius ab, was sich as zweifach, doppelt übersetzt. Es geht hier um Zahlen. - [x] Das kleinste mögliche (nützliche) System von Zeichen - [x] Mögliche Repräsentationen von Binärcode - [x] Ein Zahlensystem, das nur aus 1 und 0 besteht - [x] In manchen Programmiersprachen mit den Wahreitswerten "Falsch" (0) und "Wahr" (1) > Binäre Zahlen sind ein Zahlensystem mit nur den Ziffern 0 und 1 und somit das kleinste mögliche Zahlensystem. In Programmiersprachen oft als Repräsentation von Binärcode genutzt und durch die Wahreitswerten "Falsch" (0) und "Wahr" (1) ausgedrückt. ### Was ist Binärcode? > Binär leitet sich von binarius ab, was sich as zweifach, doppelt übersetzt. Es geht hier um Code. - [x] Ein Code der durch Binären Zahlen representiert werden kann - [x] Ein Code der durch boolesche Werte (Wahr/Falsch) representiert werden kann > Ein Binärcode ist ein Code, in dem Informationen durch Sequenzen von zwei verschiedenen Symbolen (zum Beispiel 1/0 oder Wahr/Falsch) dargestellt werden. - [x] Maschinencode eines Computerprogramms - [ ] Ein Zahlensystem mit 10 Symbolen (0 bis 9) - [ ] Ein Darstellung von Text in natürlicher Sprache - [ ] Ein Darstellung von Grafikdateien ### Was ist die AND Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![AND Tabelle](../_images/03a_Operatoren/Logic_AND.svg) > Übersetzt als die UND-Operation und verhält sich wie das UND in der Aussagenlogik. 1. [x] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) > Die AND-Operation (UND-Operation) ist eine grundlegende logische Operation in der Digitaltechnik und der Booleschen Algebra. Die AND-Operation gibt als Ergebnis "1" (Wahr) aus, wenn beide Eingangssignale "1" sind. Andernfalls gibt sie "0" (Falsch) aus. 1. [ ] Falsch (0), Wahr (0), Wahr (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Falsch (0) (0), Falsch (0) (0), Falsch (0) ### Was ist die OR Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![OR Tabelle](../_images/03a_Operatoren/Logic_OR.svg) > Übersetzt als die ODER-Operation und verhält sich wie das ODER in der Aussagenlogik. 1. [ ] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) 1. [x] Falsch (0), Wahr (0), Wahr (0), Wahr (0) > Die OR-Operation (ODER-Operation) ist eine grundlegende logische Operation in der Booleschen Algebra und der Digitaltechnik. Die OR-Operation gibt als Ergebnis "1" (Wahr) aus, wenn mindestens eines der Eingangssignale "1" ist. Sie gibt "0" (Falsch) aus, wenn beide Eingangssignale "0" sind. 1. [ ] Falsch (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Falsch (0) (0), Falsch (0) (0), Falsch (0) ### Was ist die XOR Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![XOR Tabelle](../_images/03a_Operatoren/Logic_XOR.svg) > Übersetzt als die Exklusiv-ODER-Operation und entspricht exklusiv dem Einen oder dem Anderen in der Aussagenlogik. 1. [ ] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Wahr (0) 1. [x] Falsch (0), Wahr (0), Wahr (0), Falsch (0) > Die XOR-Operation (Exklusiv-Oder-Operation) ist eine weitere grundlegende logische Operation in der Booleschen Algebra und der Digitaltechnik. Im Gegensatz zur OR-Operation, die Wahr (1) ausgibt, wenn mindestens eines der Eingangssignale Wahr ist, gibt die XOR-Operation nur dann Wahr aus, wenn genau ein Eingangssignal Wahr ist. Wenn beide Eingangssignale Wahr oder beide Falsch sind, gibt die XOR-Operation Falsch aus. 1. [ ] Wahr (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Falsch (0) (0), Falsch (0) (0), Falsch (0) ### Was ist die NOT Operation? Was ist das Ergebnis der Operation für die folgende Eingangsfolge auf A? <br> ![NOT Tabelle](../_images/03a_Operatoren/Logic_NOT.svg) > Übersetzt als die NICHT-Operation und entspricht der Negation. 1. [ ] Falsch (0), Falsch (0) 1. [ ] Falsch (0), Wahr (0) 1. [x] Wahr (0), Falsch (0) > Die NOT-Operation (auch "NICHT-Operation" oder "Invertierungsoperation" genannt) ist eine grundlegende logische Operation in der Booleschen Algebra und der Digitaltechnik. Die NOT-Operation kehrt den Zustand des Eingangssignals um. Wenn "A" Wahr (1) ist, wird "NOT A" Falsch (0), und wenn "A" Falsch (0) ist, wird "NOT A" Wahr (1). 1. [ ] Wahr (0), Wahr (0) ### Was ist die NAND Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![NAND Tabelle](../_images/03a_Operatoren/Logic_NAND.svg) > Entspricht der negierten UND-Operation. 1. [ ] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Falsch (0) 1. [x] Wahr (0), Wahr (0), Wahr (0), Falsch (0) > Die NAND-Operation ist eine grundlegende logische Operation in der Booleschen Algebra und der Digitaltechnik. Der Name "NAND" steht für "NOT AND," was darauf hinweist, dass die NAND-Operation eine Kombination aus der AND-Operation und der NOT-Operation ist und das Gegenteil des Ergebnisses der AND-Operation ausgibt. Die NAND-Operation ergibt "1" (Wahr), es sei denn, beide Eingangssignale sind "1." In diesem Fall ergibt sie "0" (Falsch). 1. [ ] Wahr (0), Falsch (0) (0), Falsch (0) (0), Falsch (0) ### Was ist die NOR Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![NOR Tabelle](../_images/03a_Operatoren/Logic_NOR.svg) > Entspricht der negierten ODER-Operation. 1. [ ] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Wahr (0), Wahr (0), Falsch (0) 1. [x] Wahr (0), Falsch (0) (0), Falsch (0) (0), Falsch (0) > Die NOR-Operation ist eine grundlegende logische Operation in der Booleschen Algebra und der Digitaltechnik. Der Name "NOR" steht für "NOT OR," was darauf hinweist, dass die NOR-Operation eine Kombination aus der OR-Operation und der NOT-Operation ist und das Gegenteil des Ergebnisses der OR-Operation ergibt. Die NAND-Operation ergibt "1" (Wahr), es sei denn, beide Eingangssignale sind "1." In diesem Fall ergibt sie "0" (Falsch). ### Was ist die XNOR Operation? Was ist das Ergebnis der Operation für die folgende Eingangskombinationen auf A und B? <br> ![XNOR Tabelle](../_images/03a_Operatoren/Logic_XNOR.svg) > Entspricht der negierten Exklusiv-Oder-Operation. 1. [ ] Falsch (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Wahr (0) 1. [ ] Falsch (0), Wahr (0), Wahr (0), Falsch (0) 1. [ ] Wahr (0), Wahr (0), Wahr (0), Falsch (0) 1. [x] Wahr (0), Falsch (0) (0), Falsch (0) (0), Wahr (0) > Die XNOR-Operation (auch als Äquivalenzoperation bezeichnet) ist eine logische Operation in der Booleschen Algebra und der Digitaltechnik. Der Name "XNOR" steht für "NOT XOR" und zeigt an, dass es eine Kombination aus der XOR-Operation und der NOT-Operation ist und das Gegenteil des Ergebnisses der XOR-Operation ergibt. Die XNOR-Operation ergibt "1" (Wahr), wenn beide Eingangssignale gleich sind (entweder beide "0" oder beide "1"). Sie ergibt "0" (Falsch), wenn die Eingangssignale unterschiedlich sind (eins "0" und das andere "1"). ### Wie verknüpft man mehrere logische Bedingungen in Python? - [x] Mit `AND`, `OR`, `NOT` - [ ] Mit `&&`, `||`, `!` - [ ] Mit `+`, `-`, `*` - [ ] Mit `COMBINE`, `MERGE`, `JOIN` - [ ] Mit `IF`, `ELSE`, `THEN`