Jeder Wert in Python hat einen Datentyp. Der Typ bestimmt, was man mit dem Wert tun kann: Zahlen kann man addieren, Texte aneinanderhängen, Listen durchlaufen. Den Typ eines Wertes zeigt dir type().
print(type(42))
print(type(3.14))
print(type("Hallo"))
print(type(True))
print(type([1, 2, 3]))
print(type((1, 2)))
print(type({"a": 1}))
print(type({1, 2}))
print(type(None))<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'list'> <class 'tuple'> <class 'dict'> <class 'set'> <class 'NoneType'>
Die eingebauten Grundtypen
| Typ | Beispiel | Bedeutung |
|---|---|---|
int | 42, -7 | ganze Zahl (beliebig groß) |
float | 3.14, 2.5e3 | Kommazahl |
complex | 2 + 3j | komplexe Zahl |
str | "Hallo" | Text (Zeichenkette) |
bool | True, False | Wahrheitswert |
list | [1, 2, 3] | veränderliche Liste |
tuple | (1, 2) | unveränderliches Tupel |
dict | {"a": 1} | Zuordnung Schlüssel → Wert |
set | {1, 2, 3} | Menge ohne Doppelte |
NoneType | None | "kein Wert" |
Listen, Tupel, Dictionaries und Mengen behandeln wir in eigenen Kapiteln.
Typ prüfen
isinstance(wert, typ) fragt, ob ein Wert zu einem Typ gehört. Das ist besser als den Typ mit == zu vergleichen:
x = 5
print(isinstance(x, int))
print(isinstance(x, str))
print(isinstance(True, int)) # bool ist eine Unterart von intTrue False True
Typen umwandeln
Mit den Funktionen int(), float(), str(), bool(), list() und anderen wandelst du Werte um:
print(int("42") + 1)
print(float("3.5") * 2)
print(str(100) + " Euro")
print(int(7.9)) # schneidet ab, rundet nicht
print(list("abc"))43 7.0 100 Euro 7 ['a', 'b', 'c']
Passt der Inhalt nicht, gibt es einen Fehler:
int("zwölf")Traceback (most recent call last):
File "beispiel.py", line 1, in <module>
int("zwölf")
ValueError: invalid literal for int() with base 10: 'zwölf'Wahr oder falsch: Truthiness
In Bedingungen behandelt Python jeden Wert als wahr oder falsch. Falsch sind: False, None, 0, 0.0, der leere Text "" und leere Sammlungen ([], (), {}, set()). Alles andere ist wahr.
for wert in [0, 1, "", "a", [], [0], None]:
print(repr(wert), "->", bool(wert))0 -> False 1 -> True '' -> False 'a' -> True [] -> False [0] -> True None -> False
Veränderlich oder nicht?
Einige Typen kann man nach dem Anlegen ändern (mutable: Liste, Dictionary, Menge), andere nicht (immutable: Zahlen, Texte, Tupel). Das spielt eine Rolle, wenn du Werte an Funktionen weitergibst oder kopierst; dazu später mehr.
Merke
type(x)zeigt den Typ,isinstance(x, int)prüft ihn- Umwandeln:
int(),float(),str(),bool(),list() - Falsch sind
False,None,0, leerer Text und leere Sammlungen int(7.9)ergibt 7 (abschneiden), nicht 8- veränderlich: list, dict, set; unveränderlich: int, float, str, tuple
Aufgabe
Wandle den Text "123" in eine Zahl um, addiere 1 und gib das Ergebnis samt Typ aus.