# hier können Sie die Rechnung ausführen
Variablen und Datentypen in Python
Python als Rechner
Python verfügt über eingebaute mathematische Fähigkeiten. Es kann die Grundrechenarten und kennt die Hierarchie der Operationen. Sie können das überprüfen, in dem Sie in der folgenden Zelle die Rechnung \[2+3\cdot4\] ausführen.
Die folgende Tabelle gibt einen Überblick über die direkt in Python verfügbaren mathematischen Funktionen:
Beschreibung | Befehl | Beispiel |
---|---|---|
Addition | + |
2 + 3 |
Subtraktion | - |
3 - 2 |
Multiplikation | * |
3 * 2 |
Division | / |
3 / 2 |
Potenzen | ** |
3 ** 2 |
Wurzeln | **(1/n) |
16 ** (1/2) |
Ganzzahlige Division | // |
7 // 2 |
Modulo | % |
7 % 2 |
Variablen
In Python sind Variablen symbolische Namen für gespeicherte Daten. Variablen verweisen dabei auf den Speicherbereich im Computer, in dem die entsprechenden Daten physikalisch abgelegt sind. Aus diesem Grund werden Variablen gelegentlich auch als Zeiger bezeichnet. Was genau für Daten in diesem Speicherbereich abgelegt werden, spielt keine Rolle und kann während der Ausführung eines Programmes auch ändern.
Variablen werden Werte mit dem Gleichheitszeichen zugewiesen. Um der Variable \(x\) den Wert \(2\) zuzuweisen, ist die Eingabe x = 2
erfoderlich. Die Variable steht links vom Gleichheitszeichen, der zuzuweisende Wert rechts davon.
Überprüfen Sie dies, indem Sie in der folgenden Zelle der Variabel \(y\) den Wert \(3\) und der Variabel \(z\) den Wert \(4\) zuweisen. Anschliessend multipliziern Sie die beiden Variablen miteinander.
# hier die Aufgabe einfüllen
Wenn Variablen neue Werte zugewiesen werden, wird die Referenz auf den Speicherbereich mit dem alten Wert gelöscht. Die Daten, welche ohne Verweis durch eine Variable im Speicher liegen, werden vom in Python eingebauten Garbage Collector im Hintergrund gelöscht und der so freigewordene Speicherplatz kann wieder verwendet werden.
Sie können überprüfen, dass Variablen neue Werte zugewiesen werden können, indem Sie in der untenstehenden Zelle die Variabeln \(y\) und \(z\) addieren. Sie erhalten dann das Resultat \(7\). Das heisst, den Variablen \(y\) und \(z\) sind immer noch die Werte \(3\) und \(4\) zugewiesen.
# addieren Sie hier y und z
Wenn Sie in der folgenden Zelle der Variabel \(y\) den Wert \(5\) zuweisen und anschliessend \(y\) und \(z\) addieren erhalten Sie als neues Resultat \(9\).
# weisen Sie hier y den neuen Wert zu
Variablen können auch Resultate von Berechnungen zugewiesen werden. Ausserdem können Variablen ganze Wörter als Namen haben. Dies ist gegenüber einzelnen Buchstaben vorzuziehen, weil dann aussagekräftige Namen gewählt werden können. Grundsätzich sind die Namen von Variabeln frei wählbar. Es gibt allerdings eine Reihe von reservierten Begriffen, welche in der Programmiersprache Python eine eigene Bedeutung haben. Unzulässig sind ausserdem Namen, die mit Ziffern beginnen.
Für die Darstellung von Namen für Variablen hat sich in Python eingebürgert, Variablen klein zu schreiben und Wörter durch Underlines zu trennen (\(this\_is\_a\_valid\_variable\)). Diese Darstellung nennt sich Snake Case. Zudem werden Variablen meist mit englischen Begriffen bezeichnet.
Weisen Sie in der nächsten Zelle der Variable result
das Resultat der Rechnung \(y + z\) zu und geben Sie das Resultat mit print(result)
aus. print()
ist eine Funktion, die Python zur Verfügung stellt. Was Funktionen sind, wird im nächsten Abschnitt erklärt.
# weisen Sie hier der Variable result das Resultat zu
Funktionen in Python
Python verfügt über viele bereits vordefinierte Funktionen. Die oben verwendete Funktion print()
ist ein Beispiel dafür. Um zu demonstrieren, wie Funktionen in Python definiert werden, zeige ich Ihnen als Beispiel eine Funktion, mit der zwei Zahlen addiert werden.
def get_sum(x, y):
return x + y
= get_sum(3,4)
result print(result)
def
ist das Schlüsselwort für die Definition einer Funktion. get_sum
ist der von mir gewählte Name dieser Funktion. Für die Wahl des Namens einer Funktion gelten die gleichen Regeln, wie für Variablen. In den Klammern stehen die sogenannten Parameter, welche der Funktion übergeben werden, damit sie etwas damit macht. Mit dem Doppelpunkt wird die Signatur der Funktion abgeschlossen. Die Signatur zeigt idealerweise, was eine Funktion womit macht. Sie gibt aber keine Auskunft darüber, wie sie das macht.
Python gruppiert Befehle, die zusammengehören, durch die gleiche Tiefe der Einrückung. Eine Einrückung hat üblicherweise die Tiefe von vier Leerzeichen. Im Beispiel oben gibt es nur eine eingerückte Zeile, weil die Funktion nur aus einem Befehl besteht. Mit return
gibt die Funktion das Resultat zurück.
Im Beispiel wird das Resultat der Berechnung, welche die Funktion ausführt der Variable result
zugewiesen. Der Wert der Variable result
wird mit print(result)
ausgegeben.
Definieren Sie in der folgenden Zelle eine Funktion, mit der zwei Zahlen multipliziert werden.
# hier kommt Ihre Funktion hin
Datentypen
Als nächstes geht es um die Frage, auf welche Inhalte eine Variable zeigen kann.
Im Grundsatz kann eine Variable auf beliebige Inhalte verweisen.
Am einfachsten ist die Verwendung der grundlegenden Datenypen (basic data types), welche Python zur Verfügung stellt. Dies sind (mit ihren englischen Bezeichnungen):
- Integer (Ganzzahl)
- Floating-Point Number (Gleitkommazahl)
- Complex Number (komplexe Zahl)
- String (Zeichenkette)
- Boolean Type (Wahrheitswert)
Darüber hinaus ist es möglich, eigene Datentypen zu programmieren. Hier aber zuerst eine Beschreibung der grundlegenden Datentypen von Python.
Integer
Die Bezeichnung für Integer in Python ist ein kurzes int
.
Anders als in anderen Progammiersprachen gibt es in Python theoretisch keine Beschränkung, wie gross ein Integer sein kann. Die einzige Grenze ist der Speicherplatz des konkreten Systems.
Wenn einer Variable ein grosser Integer zugewiesen wird, kann dieser zur besseren Lesbarkeit auch mit einem Underline als Tausendertrennzeichen geschrieben werden (100_000
).
Um das Auszuprobieren, weisen Sie in der folgenden Zelle der Variable \(a\) den Wert von einer Million und der Variable \(b\) den Wert von einer Milliarde zu. Anschliessend addieren Sie \(a\) und \(b\) und weisen das Resultat der Variable \(big\_sum\) zu. Zum Schluss geben Sie den Wert von \(big\_sum\) mit der Funktion print()
aus.
# hier können Sie Ihre Berechnung vornehmen
Eingegebene Zahlen werden automatisch als Dezimalzahlen interpretiert.
Integers können jedoch auch als Binär-, Oktal- oder Hexadezimalzahlen eingegeben werden. Die Eingabe erfordert dann allerdings ein Präfix, welches das Zahlensysten identifiziert. Die folgende Tabelle stellt die möglichen Präfixe zusammen.
Präfix | Bedeutung | Basis |
---|---|---|
0b (Null + Kleinbuchstabe b ) |
Binärzahl | 2 |
0B (Null + Grossbuchstabe B ) |
2 | |
0o (Null + Kleinbuchstabe o ) |
Oktalzahl | 8 |
0O (Null + Grossbuchstabe O ) |
8 | |
0x (Null + Kleinbuchstabe x ) |
Hexadezimalzahl | 16 |
0X (Null + Grossbuchstabe X ) |
16 |
In der folgende Zelle finden Sie ein entsprechendes Beispiel.
= 0b101010
b = 0o52
o = 0x2a
x
print(b, o, x)
Gleitkommazahl
Die Bezeichnung für Gleitkommazahlen in Python ist float
. Python interpretiert Zahlen mit einem Dezimalpunkt als Gleitkommazahlen. Optional können Zahlen mit e
oder E
in “wissenschaftlicher” Schreibweise eigegeben werden (1000 = 1e3 bzw. 1e-3 = 0.001).
Weisen Sie in der folgenden Zelle den Variablen million
und billionth
die passenden Werte in wissenschaftlicher Schreibweise zu.
# hier die Werte den beiden Variablen zuweisen
Komplexe Zahlen
Python kann auch mit komplexen Zahlen umgehen. Der Abschnitt zu diesem Thema kann wieder aufgegriffen werden, wenn Sie in Mathe die komplexen Zahlen besprochen haben.
String
Zeichenketten werden von Python als str
bezeichnet.
Zeichenketten sind beliebige Zeichenfolgen. Damit Python Zeichenketten als solche erkennt, müssen sie durch die Verwendung von einfachen oder doppelten Anführungs- und Schlusszeichen als solche gekennzeichnet werden.
"Ich bin eine Zeichenkette."
oder 'Ich bin auch eine Zeichenkette.'
Wenn man in der Zeichenkette Anführungszeichen braucht, müssen die eingrenzenden Anfürhungszeichen von der “anderen Sorte” sein ("It's cool learning Python!"
oder 'Der Lehrer sagt: "Es ist cool Python zu lernen."'
). Eine andere Möglichkeit reservierte Zeichen zu verwenden ist der Gebrauch eines “escape”-Zeichens. In Python ist das der “backslash”. Die beiden Beispielsätze von vorher hätten entsprechend auch folgendermassen geschrieben werden können:
'It\'s cool learning Python!'
bzw. "Der Lehrer sagt: \"Es ist cool Python zu lernen.\""
Die Länge von Zeichenketten wird lediglich durch die Speicherkapazität des Systems begrenzt. Insbesondere kann eine Zeichenkette auch leer sein (''
).
Zeichenketten können, wie alle Datentypen, Variablen zugewiesen werden.
= "Hello World"
standard_greeting print(standard_greeting)
Boolean Type
Wahrheitswerte werden in Python als bool
bezeichnet. Wahrheitswerte können entweder “wahr” oder “falsch” sein.
Wahrheitswerte werden zur Steuerung von Programmflüssen verwendet. Mit einem Wahrheitswert kann zum Beispiel gesteuert werden, wie oft ein Programmteil wiederholt werden soll.
Funktionen mit Type-Hints
Zum Abschluss komme ich noch einmal auf die Definition von Funktionen zurück. In Python können Variablen - anders als zum Beispiel in Java - beliebige Datentypen zugewiesen werden. Wenn Variablen im Verlauf eines Programms mehrfach verwendet werden, können ihnen auch unterschiedliche Datentypen zugewiesen werden. Dies ist allerdings schlechter Programmierstil.
Aus diesem Grund ist es sinnvoll, bei der Definition einer Funktion zu deklarieren, welche Datentypen die Parameter haben und welcher Datentyp der Rückgabewert hat. Dies soll mit dem Beispiel der Funktion get_quotient
verdeutlicht werden.
def get_quotient(x : int, y : int) -> float:
return x / y
Hier wird angegeben, dass die Parameter \(x\) und \(y\) vom Datentyp int
sein sollen. Der Datentyp des Rückgabewertes wird hinter ->
geschrieben. Im Beispiel ist der Rückgabewert vom Typ float
. Das ist so, weil die Funktion zum Beispiel \(3 / 4 = 3.5\) rechnet.
Aber Achtung: die Funktion arbeitet auch dann korrekt, wenn ein anderer als der deklarierte Datentyp übergeben wird. Voraussetzung ist lediglich, dass der Datentyp mit den verwendeten Operationen kompatibel ist. Die “Type-Hints” dienen lediglich der besseren Nachvollziehbarkeit, was die Funktion macht.