Manchmal hat ein Programm einen Wert in einem bestimmten Datentyp, braucht ihn aber in einem anderen. Wenn ein Benutzer eine Zahl eintippt, speichert Python sie zunÀchst als Text. Bevor du damit rechnen kannst, musst du sie in eine Zahl umwandeln. Das nennt sich Typumwandlung (englisch: type conversion oder type casting).
Datentypen in Python
Zuerst die wichtigsten Typen, zwischen denen du wechseln wirst:
| Typ | Beschreibung | Beispiel |
|---|---|---|
int | Ganze Zahl | 42, -7, 0 |
float | Kommazahl | 3.14, -2.5 |
str | Text | "Hallo", "42" |
bool | Wahrheitswert | True, False |
list | Liste | [1, 2, 3] |
Explizite Typumwandlung
Bei der expliziten Umwandlung rufst du eine Funktion auf, um den Typ zu Àndern:
# Text in Zahl
zahl_text = "42"
zahl_int = int(zahl_text)
zahl_float = float(zahl_text)
print(zahl_int + 8) # 50
print(zahl_float + 0.5) # 42.5
# Zahl in Text
nummer = 100
text = str(nummer)
print("Die Zahl ist: " + text) # Die Zahl ist: 100
# float in int (Nachkommastellen werden abgeschnitten)
kommazahl = 7.9
ganze_zahl = int(kommazahl)
print(ganze_zahl) # 7 (NICHT gerundet, sondern abgeschnitten!)
int(7.9) ergibt 7, nicht 8. Python schneidet die Nachkommastellen einfach ab, ohne zu runden. Wenn du runden möchtest, verwende round(7.9), das ergibt 8.
Warum ist Typumwandlung wichtig?
Das hÀufigste Szenario: Benutzereingaben
eingabe = input("Gib dein Alter ein: ")
print(type(eingabe)) # <class 'str'>
# FEHLER: str + int ist nicht möglich
# print(eingabe + 1) # TypeError!
# Richtig: Erst umwandeln
alter = int(eingabe)
naechstes_jahr = alter + 1
print(f"NĂ€chstes Jahr bist du {naechstes_jahr}.")
Implizite Typumwandlung
Bei der impliziten Umwandlung macht Python die Konvertierung automatisch, ohne dass du es verlangst:
# int + float = float automatisch
ergebnis = 5 + 2.0
print(ergebnis) # 7.0 (int wurde zu float)
print(type(ergebnis)) # <class 'float'>
# int in bool
print(bool(0)) # False
print(bool(42)) # True
Python ist vorsichtig bei der impliziten Umwandlung. Im Gegensatz zu anderen Sprachen konvertiert Python niemals automatisch zwischen Text und Zahlen. "5" + 3 wirft einen Fehler, weil Python nicht raten möchte, was du meinst.
FehlerfÀlle erkennen
Nicht alle Umwandlungen sind möglich:
int("3.14") # ValueError! â '3.14' ist kein gĂŒltiger int
int("hallo") # ValueError! â 'hallo' ist keine Zahl
float("abc") # ValueError!
Wenn du Benutzereingaben verarbeitest, solltest du Fehler abfangen:
eingabe = input("Gib eine Zahl ein: ")
try:
zahl = int(eingabe)
print(f"Das Doppelte ist: {zahl * 2}")
except ValueError:
print("Das war keine gĂŒltige ganze Zahl!")
try/except ist Pythons Art, mit Fehlern umzugehen. Wenn der Code im try-Block einen Fehler verursacht, springt Python zum except-Block, anstatt das Programm zu beenden.
Zusammenfassung: Umwandlungsfunktionen
| Funktion | Zieltyp | Beispiel | Ergebnis |
|---|---|---|---|
int() | Ganze Zahl | int("42") | 42 |
float() | Kommazahl | float("3.5") | 3.5 |
str() | Text | str(100) | "100" |
bool() | Wahrheitswert | bool(0) | False |
list() | Liste | list("abc") | ['a','b','c'] |
Ăbungsaufgaben
Was gibt der folgende Code aus und warum? print(int(9.99))
Antwort anzeigen
Ein SchĂŒler möchte zwei Zahlen addieren, die der Benutzer eingegeben hat. Er schreibt: a = input('Erste Zahl: ') / b = input('Zweite Zahl: ') / print(a + b). Was ist das Problem, und wie wird es behoben?