Vorlesungsskript 09
Ausdrücke für Zahlen
Alles, was von Python in ein Objekt (also, grob gesagt, eine Folge von Nullen und Einsen im Arbeitsspeicher) übersetzt wird, ist ein Ausdruck (engl. expression). Für diesen Prozess des „Übersetzens“ sagt man auch, dass ein Ausdruck zu einem Objekt ausgewertet wird (engl. to evaluate) oder dass der Ausdruck ein Objekt zurückgibt (engl. to return).
Bisher kennen Sie zwei Arten von Ausdrücken: Literale und Variablenausdrücke. Ein Literal beschreibt das Objekt, das es zurückgibt, vollständig, daher ist es mit Literalen möglich, Objekte „aus dem Nichts“ zu erzeugen. Variablenausdrücke dagegen funktionieren nur, wenn unter dem jeweiligen Variablennamen bereits zuvor ein Objekt gespeichert wurde – sie geben dann dasselbe Objekt zurück.
Wenn Sie im interaktiven Modus einen Ausdruck eingeben, zeigt Python
das Objekt, das dieser Ausdruck zurückgibt, als Output an, bevor das
nächste Prompt angezeigt wird. Es sei denn, der Ausdruck gibt
None
zurück! Dann zeigt Python keinen
Output an und es kommt sofort das nächste Prompt:
>>> 1
1
>>> a = 1
>>> a
1
>>> None
>>>
Daneben gibt es auch Ausdrücke, die ein oder mehrere Objekte als Input
nehmen und aus diesen Objekten ein neues Objekt erzeugen und zurückgeben. Ein
einfaches Beispiel ist der Additionsausdruck 1 + 2
.
Er nimmt zwei Objekte als Input, nämlich die int
-Objekte 1
und 2
, und gibt ein neues Objekt zurück, nämlich das int
-Objekt 3
. Um solche und
andere Ausdrückge geht es im Folgenden.
Arithmetische Operatorenausdrücke
Ein Operatorenausdruck besteht normalerweise aus zwei Ausdrücken (den
Operanden) und einem Symbol, dem Operator, der
dazwischen steht. Ein klassisches Beispiel sind arithmetische
Operatorenausdrücke, die auf Zahlen, also Objekten der Typen int
und float
, operieren. Sie
werden von Python ausgerechnet und zum Ergebnis der Rechnung ausgewertet. Hier
die wichtigsten Typen von arithmetischen Operatorenausdrücken. Wir verwenden
die Variablen a
und b
als
Beispiele für die Operanden; natürlich könnten dort auch andere Ausdrücke wie
z.B. Literale stehen.
Ausdruck | Gibt zurück |
---|---|
a + b |
Summe von a und b |
a - b |
Differenz von a und b |
a * b |
Produkt von a und b |
a / b |
Quotient von a und b |
a // b |
Ganzzahlquotient von a und b |
a % b |
Rest der Ganzzahldivision von a durch b |
a ** b |
b -te Potenz von b |
-a |
Gegenzahl von a (dieser Operator hat nur einen Operanden) |
Die folgende interaktive Session demonstriert es:
>>> 1 + 2
3
>>> 2 - 1
1
>>> 1 - 2
-1
>>> 2 * 3
6
>>> 3 / 2
1.5
>>> 3 // 2
1
>>> 3 % 2
1
>>> 2 ** 3
8
>>> a = 1
>>> -a
-1
Operatorenpräzedenz und Klammern
Natürlich lassen sich auch komplexe arithmetische Ausdrücke bauen, die wiederum arithmetische Ausdrücke als Operanden haben. Wie aus der Arithmetik gewohnt gilt auch in Python: Potenz vor Punkt vor Strich, ansonsten müssen Sie runde Klammern verwenden.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
Vergleichende Operatorenausdrücke
Mit Vergleichsoperatoren können Sie Zahlen vergleichen. Vergleichende
Operatorenausdrücke geben Objekte vom Typ bool
zurück, also True
oder False
. Hier eine Übersicht:
Ausdruck | Gibt True zurück, wenn… |
---|---|
a == b |
…die Zahlen a und b gleich groß sind. |
a != b |
…die Zahlen a und b verschieden sind. |
a > b |
…die Zahl a größer als die Zahl b ist. |
a < b |
…die Zahl a kleiner als die Zahl b ist. |
a >= b |
…die Zahl a größer oder gleich der Zahl b ist. |
a <= b |
…die Zahl a kleiner oder gleich der Zahl b ist. |
Verwechseln Sie nicht =
und ==
!
Nur mit dem doppelten Gleichheitszeichen können Sie vergleichen, das einfache ist für Variablenzuweisungen.
Zur Demonstration:
>>> 2 == 2
True
>>> 2.0 == 2
True
>>> 1 == 2
False
>>> 2 != 2
False
>>> 1 != 2
True
>>> 2 > 1
True
>>> 2 > 1.5
True
>>> 2 > 0
True
>>> 2 > -2
True
>>> 2 > 2
False
>>> 1 > 2
False
>>> 1 < 2
True
>>> 2 >= 1
True
>>> 2 >= 2
True
>>> 1 <= 2
True
>>> 2 <= 2
True
Funktionsaufrufe
Ein weiterer wichtiger Typ von Ausdruck ist der Funktionsaufruf (engl. function call). Hiermit kann man z.B. Berechnungen durchführen, für die keine Operatoren zur Verfügung stehen.
Voraussetzung für einen Funktionsaufruf ist, dass eine entsprechende Funktion definiert ist. Was Funktionen beim Programmieren genau sind und wie man seine eigenen Funktionen definiert, lernen wir später. Hier schauen wir uns erstmal einige eingebaute Funktionen (engl. built-in functions) an, also Funktionen, die in Python vordefiniert sind und die man also ohne weiteres aufrufen kann.
So, wie innerhalb von Operatorenausdrücken weitere Ausdrücke vorkommen – die Operanden – können innerhalb von Funktionsaufrufen weitere Ausdrücke vorkommen – die Argumente. Die Argumente bilden den Input einer Funktion, und u.a. von den Argumenten hängt ab, was der Funktionsausdruck zurückgibt (ganz ähnlich wie bei Kommandozeilenprogrammen und ihren Argumenten).
Ein Funktionsaufruf besteht aus dem Namen einer Funktion, gefolgt von einem Paar runder Klammern. Innerhalb der runden Klammern befinden sich, durch Kommata getrennt, die Argumente. Hier die Übersicht über einige eingebaute Funktionen, die etwas mit Zahlen zu tun haben:
Funktionsaufruf | Gibt zurück |
---|---|
abs(a) |
Betrag der Zahl a |
float(a) |
a , konvertiert zu einer Gleitkommazahl (Typ float ) |
int(a) |
a , konvertiert zu einer Ganzzahl (Typ int ) |
max(a, b, …) |
das größte unter den Argumenten |
min(a, b, …) |
das kleinste unter den Argumenten |
bin(a) |
die Ganzzahl a in Binärschreibweise (als str ) |
hex(a) |
die Ganzzahl a in Hexadezimalschreibweise (als str ) |
oct(a) |
die Ganzzahl a in Oktalschreibweise (als str ) |
round(number) |
Ergebnis der mathematischen Rundung der Zahl number auf Ganzzahlen als int |
round(number, digits) |
Ergebnis der mathematischen Rundung der Zahl number als float ; digits gibt die Anzahl der beizubehaltenden Nachkommastellen an; ist digits negativ, wird auf Vielfache von 10 gerundet |
Zur Demonstration:
>>> abs(2)
2
>>> abs(-2)
2
>>> float(2)
2.0
>>> float('2.5')
2.5
>>> int(2.5)
2
>>> int('2')
2
>>> max(42, -2, 1)
42
>>> min(42, -2, 1)
-2
>>> bin(42)
'0b101010'
>>> hex(42)
'0x2a'
>>> oct(42)
'0o52'
>>> round(2.5)
2
>>> round(2.51)
3
>>> round(3.1415, 2)
3.14
>>> round(3.1415, 0)
3.0
>>> round(42, -1)
40