Text und Zahlen
Jeder Wert in Python hat einen Typ. Bisher hast du drei Typen benutzt:
- Ganze Zahlen wie
25oder-3. Python nennt sieint, von „integer“ (Ganzzahl). - Dezimalzahlen wie
1.5oder3.0. Python nennt siefloat, von „floating point“ (Gleitkommazahl). - Text wie
"Hallo". Programmierer nennen ihn eine Zeichenkette (englisch „string“), und Python nennt siestr.
Deshalb braucht Text Anführungszeichen und Zahlen nicht: 25 ist eine Zahl, aber "25" ist ein Text aus den Zeichen 2 und 5. In der Ausgabe siehst du den Unterschied nicht: print(25) und print("25") geben beide 25 aus. Aber der Typ entscheidet, was ein Operator tut. Zum Beispiel addiert + zwei Zahlen, verbindet aber zwei Zeichenketten:
print(5 + 3)
print("5" + "3")Das gibt Folgendes aus:
8
53Und was passiert bei einer Zeichenkette und einer Zahl? Python kann nicht wissen, ob du Zahlen addieren oder Text verbinden willst, und es rät nicht. Es bricht mit einem Fehler ab:
alter = 25
print("Ich bin " + alter + " Jahre alt.")Das gibt Folgendes aus:
Traceback (most recent call last):
File "<exec>", line 2, in <module>
TypeError: can only concatenate str (not "int") to strDie letzte Zeile sagt, was schiefgegangen ist: ein TypeError, ein Fehler bei den Typen. Python kann nur einen str mit einem str verbinden (konkatenieren), nicht mit einem int. Die Zeile darüber sagt, wo es passiert ist: line 2. Mehr über Fehlermeldungen lernst du später in dieser Lektion.
Um das zu beheben, wandelst du den Wert in den Typ um, den du brauchst. Python hat für jeden Typ eine Funktion:
str()macht aus einem Wert eine Zeichenkette:str(25)ist"25".int()macht aus einer Zeichenkette eine ganze Zahl:int("25")ist25.float()macht aus einer Zeichenkette eine Dezimalzahl:float("2.5")ist2.5.
alter = 25
print("Ich bin " + str(alter) + " Jahre alt.")
print(int("5") + 3)
print(float("2.5") + 1)Das gibt Folgendes aus:
Ich bin 25 Jahre alt.
8
3.5Zahlen kommen oft als Text an, zum Beispiel wenn jemand sie in ein Formular eingibt oder wenn sie aus einer Datei gelesen werden. Bevor du mit ihnen rechnest, wandle sie mit int() oder float() um. Wenn du es vergisst, bekommst du wieder einen TypeError, und wenn die Zahl zuerst kommt, wie in 25 + "5", lautet die Beschreibung anders: unsupported operand type(s) for +: 'int' and 'str'. Das heißt, dass + mit einem int und einem str nichts anfangen kann.
Wenn du Werte durch Kommas trennst, brauchst du str() nicht: print("Ich bin", alter, "Jahre alt.") funktioniert mit jedem Typ. Und in der nächsten Übung lernst du einen noch einfacheren Weg, Zahlen in Text einzusetzen.
So schreibst du es:
Anweisungen
- 1
Das Programm endet mit einem Fehler. Führe es aus und lies die letzte Zeile der Fehlermeldung. Behebe dann die letzte Zeile mit
str(), sodass das ProgrammPunktestand: 120ausgibt. - 2
Der Bonus ist als Text gespeichert:
"30"steht in Anführungszeichen. Lass ihn so, wie er ist, und gib in einer neuen ZeileNeuer Punktestand:und den Punktestand mit addiertem Bonus aus, getrennt durch ein Komma. Wandle den Bonus vorher mitint(bonus)in eine Zahl um. Das Programm soll Folgendes ausgeben:Punktestand: 120 Neuer Punktestand: 150