Variablen und Datentypen in Python

Author

Jacques Mock Schindler

Published

11.09.2024

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.

# hier können Sie die Rechnung 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

result = get_sum(3,4)
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.

b = 0b101010
o = 0o52
x = 0x2a

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.

standard_greeting = "Hello World"
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.