Numerische Datentypen

Sie haben sich bereits eingehend mit dem Datentyp string auseinandergesetzt, aber Python bietet natürlich auch eine Reihe von numerischen Datentypen, die wir auch als überwiegend mit textuellen Daten arbeitende Geistes- und Geschichtswissenschaftler:innen kennenlernen sollten, insbesondere dann, wenn wir die ein oder andere quantitative Methode anwenden wollen. Dabei können wir zugleich eine nützliche Funktion erlernen, die wir benötigen, wenn wir Daten sammeln, mit unbekannten Datenbanken arbeiten oder uns einfach so nicht mehr sicher sind, um welchen Datentyp es sich bei einer Variable handelt. Durch den Aufruf der Funktion type() können wir die Information einfach in Python erfragen.

# identify the datatype
text = "some text"
type(text)

Ganzzahlen

Bei integers handelt es sich um ganze Zahlen.

# identify the datatype
x = 2
type(x)

Gleitkommazahlen

Bei float handelt es sich um Gleitkomma- beziehungsweise Dezimalzahlen.

# identify the datatype
y = 5.0
type(y)

Dezimalzahlen weisen nicht selten zahlreiche Nachkommastellen auf. Es kann dann gewünscht sein, diese durch Rundung zu verringern. Das können Sie mit der Funktion round() erledigen. Sie nimmt als erstes Argument den jeweiligen Wert, der gerundet werden soll, und optional als zweites Argument die Anzahl der gewünschten Nachkommastellen.

Zwei Beispiele:

# example 1: round decimal
round(5.7823432, 2)
# example 2: round decimal
round(5.7823432)

Was ist beim zweiten Beispiel passiert? Prüfen Sie ggf. den Datentyp.

# your answer

Komplexe Zahlen

Ein besonderer numerischer Datentyp sind die komplexen Zahlen. Da dieser Datentyp in Szenarien, mit denen Historiker:innen programmatisch arbeiten, selten vorkommt, soll er an dieser Stelle nicht weiter erläutert werden – dennoch sollter dieser zumindest kurz erwähnt werden.

# identify the datatype
z = 1 + 2j
type(z)

Datentyp ändern

Wir hatten darauf hingewiesen, dass Variablen in Python dynamisch typisiert werden, also dass automatisch ermittelt wird, ob es sich bei einem Wert um eine komplexe Zahl, ein Integer oder einen String handelt. Es kann aber vorkommen, dass wir bewusst den Datentyp ändern wollen. Einen solchen Fall haben wir mit der input()-Funktion kennengelernt. Sie erinnern sich: Die Eingabe wird immer als String gespeichert. Vielleicht möchten wir aber gerne mit Zahlen als Nutzer:inneneingaben arbeiten, dann können wir den String explizit umwandeln.

Zum Beispiel:

# normal input
age = input("How old are you? ")
print(f"Die Eingabe ist vom Typ {type(age)}.")
# convert input
age_int = int(input("How old are you? "))
print(f"Die Eingabe ist vom Typ {type(age_int)}.")

Mit der konvertierten Eingabe können nun auch bedarfsweise mathematische Berechnung angestellt werden. Konvertierungsfunktionen gibt es unter anderem für die komplexen Zahlen (complex()), Strings (str()), Integers (int()) und Gleitkommazahlen (float()).

Arithmetische Operatoren

Python kann ganz einfach genutzt werden, um einfache und auch komplexere mathematische Berechnungen zu lösen. Sie können die Programmierumgebung gewissermaßen wie einen Taschenrechner benutzen oder kleine Programme schreiben, die Ihnen wiederkehrende Aufgaben, wie beispielsweise Prozentrechnung, abnehmen.

Probieren Sie zunächst die nachfolgenden Berechnungen aus und erklären Sie, wofür die mathematischen Symbole (Operatoren) stehen. Sie werden feststellen, dass wir einige der Operatoren auch bei der Arbeit mit Zeichenketten genutzt haben.

2 + 3
2 + -3
2 - 3

Wofür stehen die Operatoren + und - in diesen Beispielen?

# your answer
2 * 3
(2 + 200) * 3
2 ** 10
24 ** 45

Wofür stehen die Operatoren * und ** in diesen Beispielen?

# your answer
10 / 2
10 / 3
10 // 2
10 // 3

Wodurch unterscheiden sich die Berechnungen mit / und //?

# your answer
10 % 3
10 % 5
10 % 4

Erklären Sie die Funktionsweise des sog. Modulo-Operators:

# your answer
"5" + "13"
"5" * 13
int("5") + int("13")
float("5") * 13
str(30) * 2

Erklären Sie, was in den einzelnen Codezeilen passiert ist:

# your answer