Kapitel 4
Standard-Datentypen
92
Man erkennt Folgendes:
Wenn der Realteil gleich null ist, wird er weggelassen.
Ansonsten werden komplexe Zahlen durch runde Klammern eingefasst.
4.9 Arithmetische Operatoren für Zahlen
Auf Zahlen können bei Python die üblichen arithmetischen Operationen angewendet wer-
den, die man aus der Schulmathematik kennt. Lediglich die Schreibweise der Operatoren
ist gelegentlich etwas anders als in der Mathematik. Tabelle 4.1 gibt einen Überblick.
Sämtliche arithmetischen Operatoren können auf alle Zahlen-Typen angewendet werden.
Allerdings ist die Modulo-Rechnung bei komplexen Zahlen veraltet und sollte nicht mehr
verwendet werden.
Potenzen
Der Potenz-Operator ** bildet die Potenz aus einer Basis (linker Operand) und dem Expo-
nenten (rechter Operand).
Die Bindungen sind wie in der Mathematik: Der Potenz-Operator bindet nach links stärker
als das Vorzeichen, aber nach rechts schwächer als das Vorzeichen des Exponenten. Das
heißt, in dem Term
–2**-2 wird zuerst der Exponent berechnet (stärkere Bindung des Expo-
nentenvorzeichens), dann die Potenz von
2 gebildet (stärkere Bindung des Potenz-Operators
gegenüber dem linken Vorzeichen) und dann erst das linke Vorzeichen auf das Ergebnis
angewendet. Will man negative Zahlen potenzieren, muss man Klammern verwenden. Bei-
spiele:
Operator Erläuterung Beispielterm Ergebnis
**
Potenz
2 ** 3 8
-
Negatives Vorzeichen (unär)
-1 -1
+
Positives Vorzeichen (unär)
+1 1
*
Multiplikation
2.0 * 2 4.0
/
Division
3 / 2 1.5
//
Ganzzahlige Division
3 // 2 1
%
Rest der ganzzahligen Division
(modulo) – für komplexe Zahlen
veraltet
5 % 3 2
+
Addition
(2+2j) + (3+4.0j) (5+6j)
-
Subtraktion
6.0 - (2+1j) (4-1j)
Tabelle 4.1: Arithmetische Operatoren
>>> 2**3
8
93
4.9
Arithmetische Operatoren für Zahlen
Basis und Exponent können beliebige numerische Objekte sein. Auch Gleitkommazahlen
und komplexe Zahlen sind erlaubt. Allerdings kann von einer negativen ganzen Zahl oder
Gleitkommazahl keine Potenz mit gebrochenem Exponenten gebildet werden.
Vorzeichenoperatoren
Ihnen wird aufgefallen sein, dass die Operatoren + und zwei Mal in der Tabelle 4.1 auftau-
chen, nämlich als unäre und binäre Operatoren. Unäre Operationen besitzen nur einen ein-
zigen Operanden, binäre dagegen zwei. Der unäre Minus-Operator kehrt das Vorzeichen
des Operanden um, während der binäre Minus-Operator eine Subtraktion des rechten Ope-
randen vom linken bewirkt.
Der unäre Plus-Operator
+ hat keine Wirkung, er belässt das Vorzeichen, wie es ist.
Die unären Vorzeichenoperatoren haben eine niedrigere Priorität als der Potenzoperator
**,
aber eine höhere Priorität als alle anderen arithmetischen Operatoren. So sind auch Term-
formulierungen erlaubt, in denen mehrere Plus- und Minuszeichen aufeinanderfolgen.
Beispiele:
Multiplikation
Im Unterschied zur Schreibweise in der Mathematik ist das Multiplikationssymbol ein
Stern. Während man in mathematischen Termen den Multiplikationsoperator häufig weg-
lässt, muss er in Python-Programmtext immer geschrieben werden:
>>> -2**-2
-0.25
>>> (-2)**-2
0.25
>>> 2**0.5 # Quadratwurzel aus 2
1.4142135623730951
>>> 2**(1+1j)
(1.5384778027279442+1.2779225526272695j)
>>> -1+-3
-4
>>> 2++3
5
>>> ---1
-1
>>> -1**4 # entspricht -(1**4)
-1
>>> x=1
>>> 2x
SyntaxError: invalid syntax
Kapitel 4
Standard-Datentypen
94
Division
Der Divisionsoperator / liefert den Quotienten zweier Zahlen. Das Ergebnis der Division
ganzer Zahlen oder Gleitkommazahlen ist immer ein Objekt des Typs
float. Das gilt auch,
wenn (mathematisch gesehen) eine ganze Zahl herauskommt.
Ist unter den Operanden wenigstens eine komplexe Zahl, ist das Ergebnis auch ein Objekt
vom Typ
complex. Das gilt auch dann, wenn das mathematische Ergebnis eine reelle oder
sogar eine ganze Zahl ist.
Der Versuch einer Division durch null löst einen ZeroDivisionError aus.
Ganzzahlige Division
Die ganzzahlige Division mit dem Operator // (floor division) liefert den nach unten gerun-
deten ganzzahligen Quotienten zweier Zahlen.
Das Ergebnis ist also immer eine ganze Zahl, aber der Typ kann unterschiedlich sein. Wenn
beide Operanden vom Typ
int sind, ist auch das Ergebnis vom Typ int (die ersten beiden
Beispiele). Wenn einer der beiden Operanden vom Typ
float ist, ist auch das Ergebnis vom
Typ
float (unteres Beispiel).
>>> 2*x
2
>>> 3 / 2
1.5
>>> 2 / 2
1.0
>>> 2.0 / 2
1.0
>>> 1j / 1j
(1+0j)
>>> (1+1j)/2
(0.5+0.5j)
>>> (1 + 1j)/2j
(0.5-0.5j)
>>> 3 // 2
1
>>> -1 // 2
-1
>>> 3.0 // 2
1.0
95
4.9
Arithmetische Operatoren für Zahlen
Modulo
In der Praxis wird die Modulo-Operation meistens bei ganzen Zahlen angewendet. In die-
sem Fall liefert der Modulo-Operator
% den Rest der ganzzahligen Division des ersten Ope-
randen durch den zweiten. Oder etwas mathematischer:
a%b == c, wenn es eine Zahl d gibt
mit
a/b == d und a == d*b + c. Beispiele:
Eine typische Anwendung der Modulo-Operation ist die Zerlegung eines Geldbetrages in
Münzen und Scheine. Dies muss z.B. ein Automat leisten können, der Wechselgeld heraus-
gibt.
Protokoll eines Programmlaufs:
>>> 123%10 # 123/10 == 12 Rest 3
3
>>> 5%2 # 5 == 2*2 + 1
1
# Zerlegung eines Geldbetrages in Scheine und Münzen
geld = input("Geldbetrag in Euro: ")
geld = int(geld)
zwanziger = geld // 20
geld = geld % 20
zehner =geld // 10
geld = geld % 10
fuenfer = geld // 5
geld = geld % 5
zweier = geld // 2
einer = geld % 2
print("Der Betrag setzt sich wie folgt zusammen:")
print(zwanziger, "mal 20 Euro")
print(zehner, "mal 10 Euro")
print(fuenfer, "mal 5 Euro")
print(zweier, "mal 2 Euro")
print(einer, "mal 1 Euro")
Geldbetrag in Euro: 98
Der Betrag setzt sich wie folgt zusammen:
4 mal 20 Euro
1 mal 10 Euro
1 mal 5 Euro
1 mal 2 Euro
1 mal 1 Euro

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.