Text in Zahlen umwandeln
Warum brauchen wir das?
input() liefert immer Text (str).
Wenn jemand 11 tippt, bekommst du "11" – nicht die Zahl 11.
Für Begrüßungen ist das egal. Für Rechnen ist es entscheidend.
# knallt:
alter = input("Alter: ")
print(alter + 1)
Python kann "11" und 1 nicht sinnvoll addieren: Text + Zahl → TypeError.
Du brauchst einen bewussten Schritt: Umwandlung vom Text zur Zahl.
Definition: Umwandlung und int()
Definition – Umwandlung (Konvertierung):
Umwandlung bedeutet, einen Wert von einem Datentyp in einen anderen zu bringen.
Definition – int():
int(...)versucht, etwas in eine ganze Zahl zu verwandeln.
Beispiel:int("11")→11.
Definition – float() (Ausblick):
float(...)versucht, etwas in eine Kommazahl zu verwandeln.
Beispiel:float("2.5")→2.5.
Umwandlung ist kein Zauber – sie gelingt nur, wenn der Text sinnvoll als Zahl gelesen werden kann.
Lily wird ein Jahr älter
alter = int(input("Wie alt bist du? "))
print(alter + 1)
Von innen nach außen lesen
alter = int(input("Wie alt bist du? "))
Python arbeitet von innen nach außen:
input(...)→ z. B."11"(str)int("11")→11(int)- Zuweisung speichert
11inalter alter + 1→12
Py: „Zuerst lesen, dann umwandeln, dann rechnen.“
Buggy lässt int weg und erntet TypeError.
Lily merkt sich die Reihenfolge wie eine Zwiebel: innen zuerst.
Neue Wörter
Einen Wert in einen anderen Datentyp verwandeln.
Wandelt passenden Text in eine ganze Zahl um.
Fehler, wenn der Wert nicht umwandelbar ist, z. B. int('hallo').
Gute und schlechte Eingaben
| Eingabe (getippt) | int(...) | Kommentar |
|---|---|---|
12 | 12 | super |
0 | 0 | super |
-3 | -3 | negative ints gehen |
hallo | ValueError | keine Zahl |
12.5 | ValueError bei int | dafür float |
| leere Enter-Zeile | ValueError | nichts zum Umwandeln |
Für den Anfang: echte ganze Ziffern eingeben. Später lernst du, Fehler abzufangen.
Ohne int: die "55"-Überraschung
a = input("Zahl: ") # tippe 5
print(a + a) # "55" – Text aneinander!
Mit Umwandlung:
a = int(input("Zahl: "))
print(a + a) # 10
Dieselbe Taste 5 – zwei völlig verschiedene Welten, je nach Typ.
Zwei Schreibweisen
Verschachtelt (kurz)
alter = int(input("Alter: "))
In zwei Schritten (klar für Anfänger)
alter_text = input("Alter: ")
alter = int(alter_text)
Beide sind richtig. Die Zwei-Schritt-Version macht den Typwechsel sichtbar.
Was passiert im Computer?
- Die Tastatur liefert Zeichen.
inputbaut daraus einen String.intprüft: Kann man diesen String als ganze Zahl lesen?- Bei Erfolg: echter int-Wert.
- Bei Misserfolg: ValueError – Programm stoppt (noch ohne sanfte Meldung).
Python rechnet erst nach erfolgreicher Umwandlung.
Häufige Fehler
| Code / Situation | Problem | Fix |
|---|---|---|
alter + 1 ohne int | TypeError | int(input(...)) |
int("hi") | ValueError | gültige Zahl tippen |
int um print statt um input | falsche Stelle | innen: input, außen: int |
float-Text mit int | ValueError | float(...) nutzen |
| Leerzeichen-Chaos | manchmal ok, oft besser trimmen | später strip |
Probiere es selbst
Experiment 1 – Verdoppeln
zahl = int(input("Zahl: "))
print(zahl * 2)
Experiment 2 – Zukunft
alter = int(input("Alter: "))
print("In 5 Jahren:", alter + 5)
Experiment 3 – Summe
a = int(input("Erste Zahl: "))
b = int(input("Zweite Zahl: "))
print("Summe:", a + b)
Experiment 4 – Buggy-Vergleich
a = input("Zahl: ")
print("ohne int:", a + a)
a = int(a)
print("mit int:", a + a)
Fehlerdetektiv
alter = input("Wie alt bist du? ")
print(alter + 1)
Lösung anzeigen
alter ist str. Richtig:
alter = int(input("Wie alt bist du? "))
print(alter + 1)
Übungen
Level 1 – Entdecken
Zahl einlesen, Doppeltes ausgeben.
Lösung
zahl = int(input("Zahl: "))
print(zahl * 2)
Level 2 – Anwenden
Zwei Zahlen einlesen und die Summe ausgeben.
Lösung
a = int(input("Erste Zahl: "))
b = int(input("Zweite Zahl: "))
print(a + b)
Level 3 – Erweitern
Alter jetzt, in 1 Jahr und in 10 Jahren ausgeben.
Beispiel
alter = int(input("Alter: "))
print("Jetzt:", alter)
print("In 1 Jahr:", alter + 1)
print("In 10 Jahren:", alter + 10)
Mini-Challenge
Mini-Kasse: Preis und Anzahl als int einlesen → Gesamtpreis.
Erkläre: Warum reicht input allein nicht zum Rechnen?
Loesungsidee
preis = int(input("Preis in Euro: "))
anzahl = int(input("Anzahl: "))
print("Gesamt:", preis * anzahl)
Zusammenfassung
input→ immer str.int("11")→ ganze Zahl11.- Verschachtelung von innen nach außen lesen.
- Ohne Umwandlung: oft TypeError oder Text-Plus
"55". - Ungültiger Text → ValueError.
float()für Kommazahlen (Preise, Maße).
Mini-Quiz
- Welchen Typ hat
inputallein? - Was macht
int("8")? - Warum ist
"5" + "5"nicht 10?
Lösungen
- str
- Wandelt in die Zahl 8 um
- Strings werden aneinandergehängt, nicht addiert
Umwandlung sitzt! Als Nächstes: ein ganzer Dialog mit mehreren Fragen.