Addition und Subtraktion

Die Addition und Subtraktion ist prinzipiell nicht erwähnenswert, da diese analog wie die Addition und Subtraktion in der Mathematik funktioniert.

Ebenso analog wie in der Mathematik können entsprechende Ausdrücke mit runden Klammern zusammengefasst werden.

Einzig die Umwandlung (Conversion) unterschiedlicher Variablen-Typen muss beachtet werden.

In [2]:
%%Mooc StringAssessment
Out[2]:

Addition zweier Integer-Werte

Wenn jetzt die beiden folgenden Zuweisungen für die Variablen a und b durchgeführt werden


    a = 2
    b = 5

und dann


    a + b

berechnet wird,

was wird als Ergebnis angezeigt?



In [3]:
%%Mooc StringAssessment
Out[3]:

Automatische Umwandlung einer Variablen !

Wenn jetzt die beiden folgenden Zuweisungen für die Variablen a und b durchgeführt werden


    a = 2
    b = 5.0

und dann


    a + b

berechnet wird,

was wird als Ergebnis angezeigt?



Multiplikation und Division

Auch die Multiplikation und Division ist prinzipiell nicht erwähnenswert, da diese analog wie die Multiplikation und Division in der Mathematik funktioniert.

Ebenso wie bei der Addition und Subtraktion muss die Umwandlung (Conversion) unterschiedlicher Variablen-Typen beachtet werden, wobei die Division immer eine Variable vom Typ Float zurückliefert.

In [4]:
%%Mooc StringAssessment
Out[4]:

Multiplikation zweier Integer-Werte

Wenn jetzt die beiden folgenden Zuweisungen für die Variablen a und b durchgeführt werden


    a = 2
    b = 5

und dann


    a * b

berechnet wird,

was wird als Ergebnis angezeigt?



In [5]:
%%Mooc StringAssessment
Out[5]:

Automatische Umwandlung bei der Multiplikation

Wenn jetzt die beiden folgenden Zuweisungen für die Variablen a und b durchgeführt werden


    a = 2
    b = 5.0

und dann


    a * b

berechnet wird,

was wird als Ergebnis angezeigt?



In [6]:
%%Mooc StringAssessment
Out[6]:

Division

Wenn jetzt die beiden folgenden Zuweisungen für die Variablen a und b durchgeführt werden


    a = 6
    b = 3

und dann


    a / b

berechnet wird,

was wird als Ergebnis angezeigt?



Weitere mathematische Operatoren

Die folgenden weiteren Operatoren sind ebenfalls in Python vorhanden:

  • ** als Power- bzw. Potenz-Operator
  • // als Floor-Division bzw. Abrundungs-Operator
  • % als Remainder bzw. Modulo-Operator
In [7]:
%%Mooc StringAssessment
Out[7]:

Aufrundungs-Operator

Es gibt in vielen Programmiersprachen keinen Aufrundungs-Operator. Warum nicht ?

Die Antwort hierzu lautet, dass er über den Abrundungs-Operator hergeleitet werden kann.

Wenn also


    a // b

berechnet wird,

wie lautet dann die Berechnung der Aufrundung ?



Boole'sche und Vergleichsoperatoren

Wahr und Falsch

In Python wird sehr oft abgefragt, ob ein Wert, eine Variable, ein Objekt wahr (True) oder falsch (False) ist.

Die folgenden Wert sind immer False:

  • None
  • False
  • Null für jeden numerischen Typ, also 0, 0.0, 0j
  • jede leere Liste oder Sequenz, also '', (), []
  • jedes leere Dictionary, also {}

Alle[1] anderen Werte werden als wahr (True) angesehen — also insbesonders Objekte aller möglichen Typen[1] sind immer wahr.

Operationen und Funktionen mit einem Boole'schen Wert als Rückgabe geben immer 0 oder False für falsch und 1 oder True für wahr zurück.

In [8]:
%%Mooc MultipleChoiceAssessment
Out[8]:

Wahr oder Falsch ?

Welche der folgenden Aussagen ist wahr ?

dict()
list()
2**2-4
'Digital und Regional'

Boole'sche Operatoren and, or, not

Operation Ergebnis Anmerkung
x or y wenn x falsch ist, dann y andernfalls x (1)
x and y wenn x falsch ist, dann x, andernfalls y (2)
not x wenn x falsch ist, dann wahr andernfalls falsch (3)

Anmerkungen:

  1. Dies ist ein Kurzschluss-Operator (short-circuit operator), der das zweite Argument nur dann abprüft, wenn das erste falsch ist.
  2. Dies ist ebenfalls ein Kurzschluss-Operator, der das zweite Argument nur dann abprüft, wenn das erste wahr ist.
  3. not hat eine geringere Priorität als nicht-boolesche Operatoren, d.h. not a == b wird als not (a == b) interpretiert und a == not b ist ein Syntax Fehler.

Vergleichsoperationen

Es gibt in Python 8 Vergleichsoperatoren, die alle die gleiche Priorität haben (die höher ist als diejenige von Boole'schen Operatoren):

Operation Meaning
< kleiner als
<= kleiner oder gleich als
> größer als
>= größer oder gleich als
== gleich
!= ungleich
is Objektidentität
is not keine Objektidentität

Vergleichsoperationen können beliebig verkettet werden, z.B. x < y <= z ist äquivalent zu x < y and y <= z, ausgenommen, dass hier im ersten Fall y nur einmal verwendet wird (aber in beiden Fällen z nur dann verwendet wird, wenn x < y falsch ist).

In [9]:
%%Mooc StringAssessment
Out[9]:

Vergleichsoperation

Die Variablen a,b und c sind folgendermaßen vorbesetzt:


    a = 5
    b = 15
    c = None

und werden in die folgende Vergleichsoperation eingesetzt:

    a < b and c

Wie lautet dann das Ergebnis der Vergleichsoperation ?



In [10]:
%%Mooc MultipleChoiceAssessment
Out[10]:

Objektidentität - 1

Die Variablen a und b werden folgendermaßen vorbesetzt:


    a = [1,3,5,7,11]
    b = a

und werden in die folgende Vergleichsoperation eingesetzt:

    a is b

Ist das Ergebnis der Vergleichsoperation wahr oder falsch ?

True
False

In [11]:
%%Mooc MultipleChoiceAssessment
Out[11]:

Objektidentität - 2

Die Variablen a und b werden folgendermaßen vorbesetzt:


    a = [1,3,5,7,11]
    b = a[:]

und werden in die folgende Vergleichsoperation eingesetzt:

    a is b

Ist das Ergebnis der Vergleichsoperation wahr oder falsch ?

True
False

In [12]:
%%Mooc Video
Out[12]:

Bit-Operatoren

Für Bit-Operationen stehen die folgenden Bit-Operatoren zur Verfügung:

Operation Beschreibung
x | y bitweises oder von x und y
x ^ y bitweises exklusives oder von x und y
x & y bitweises und von x und y
x << n x wird um n bits nach links geschoben
x >> n x wird um n bits nach rechts geschoben
~x alle bits von x werden invertiert
In [13]:
%%Mooc StringAssessment
Out[13]:

Bit-Operatoren

In der Programmierung wird - um Speicherplatz zu sparen - oftmals mit Masken gearbeitet. Wenn also z.B. in einem Byte alle Bits unterschiedliche Informationen beinhalten, dann muss der Programmieren diese Informationen auch wieder einzeln herauslesen können.

Wenn also


    a = 221

und das 2. und 3. Bit relevante Informationen enthält, so bekommt man diese

mit welcher Berechnung ?



Weitere Literatur

In [14]:
%%Mooc WebReference

Boolean Operations

https://docs.python.org/3/reference/expressions.html#boolean-operations

Hinweis: Referenz Dokumentation zu den Booleschen Operatoren

In [15]:
%%Mooc WebReference

Comparisons

https://docs.python.org/3/reference/expressions.html#comparisons

Hinweis: Referenz Dokumentation zu den Vergleichsoperatoren

In [16]:
%%Mooc WebReference

Binary Bitwise Operations

https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations

Hinweis: Referenz Dokumentation zu den Bitoperatoren