Читать книгу Routineaufgaben mit Python automatisieren - Al Sweigart - Страница 47
Die Funktionen str(), int() und float()
ОглавлениеWenn Sie eine Zahl wie 29 mit einem String verketten wollen, etwa um das Ergebnis an print() zu übergeben, brauchen Sie die Stringversion von 29, also '29'. Die Funktion str() nimmt einen Integer entgegen und wertet ihn zu seiner Stringversion aus:
>>> str(29)
'29'
>>> print('I am ' + str(29) + ' years old.')
I am 29 years old.
Da str(29) den String '29' ergibt, wird der Ausdruck 'I am ' + str(29) + ' years old' zu 'I am ' + '29' + ' years old' ausgewertet und dieses wiederum zu 'I am 29 years old'. Dieser Wert wird dann an print() übergeben.
Die Funktionen str(), int() und float() werden zu der String-, Integer- bzw. Fließkommaversion des übergebenen Wertes ausgewertet. Versuchen Sie in der interaktiven Shell, einige Werte mithilfe dieser Funktionen umzuwandeln, und beobachten Sie, was passiert.
>>> str(0)
'0'
>>> str(-3.14)
'-3.14'
>>> int('42')
42
>>> int('-99')
-99
>>> int(1.25)
1
>>> int(1.99)
1
>>> float('3.14')
3.14
>>> float(10)
10.0
In den vorstehenden Beispielen werden die Funktionen str(), int() und float() aufgerufen und ihnen Werte anderer Datentypen übergeben, aus denen sie Strings, Integer bzw. Fließkommazahlen machen.
Die Funktion str() ist insbesondere dann praktisch, wenn Sie eine Integer- oder Fließkommazahl haben, die Sie mit einem String verketten wollen. Liegt umgekehrt eine Zahl als Stringwert vor, dann können Sie die Funktion int() anwenden, um diese Zahl in mathematischen Funktionen einsetzen zu können. Das ist beispielsweise bei der Verwendung der Funktion input() wichtig, die stets einen String zurückgibt, auch wenn der Benutzer eine Zahl eingibt. Geben Sie in der interaktiven Shell spam = input() ein. Wenn die Shell auf Ihren Text wartet, schreiben Sie 101. Dabei geschieht Folgendes:
>>> spam = input()
101
>>> spam
'101'
In spam ist nicht etwa der Integer 101 gespeichert, sondern der String '101'. Wenn Sie mit dem Wert dieser Variablen nun irgendwelche Berechnungen anstellen wollen, müssen Sie ihn zunächst mit int() in die Integerform umwandeln und diese als neuen Wert in spam speichern.
>>> spam = int(spam)
>>> spam
101
Jetzt können Sie die Variable spam wie einen Integer verwenden und nicht mehr wie einen String:
>>> spam * 10 / 5
202.0
Wenn Sie int() einen Wert übergeben, der nicht in einen Integer umgewandelt werden kann, zeigt Python eine Fehlermeldung an.
>>> int('99.99')
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'
>>> int('twelve')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
int('twelve')
ValueError: invalid literal for int() with base 10: 'twelve'
Mit der Funktion int() können Sie auch einen Fließkommawert abrunden.
>>> int(7.7)
7
>>> int(7.7) + 1
8
In Ihrem ersten Programm werden die Funktionen int() und str() in den letzten drei Zeilen verwendet, um im Code Werte des passenden Datentyps bereitzustellen.
print('What is your age?') # Fragt nach dem Alter
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')
Die Variable myAge enthält den von input() zurückgegebenen Wert. Da diese Funktion immer einen String zurückgibt (auch wenn der Benutzer eine Zahl eingegeben hat), müssen Sie den String in myAge mit int(myAge) in einen Integerwert umwandeln, damit Sie 1 addieren können, was in dem Ausdruck int(myAge) + 1 geschieht.
Das Ergebnis dieser Addition wird wiederum der Funktion str() übergeben: str(int(myAge) + 1). Der daraus resultierende Stringwert wird mit den Strings 'You will be ' und ' in a year' zu einem einzigen, langen Stringwert verkettet, der dann schließlich zur Anzeige an print() übergeben wird.
Nehmen wir an, der Benutzer gibt als Alter 4 ein. Der String '4' wird in einen Integer umgewandelt, sodass 1 addiert werden kann, was 5 ergibt. Die Funktion str() konvertiert dieses Ergebnis wieder in einen String zurück, sodass er mit dem zweiten String ' in a year' verkettet werden kann, um die endgültige Meldung zu bilden. Die Auswertung läuft wie folgt ab: