Python input prüfen?
Hallo zusammen,
Ich arbeite gerade an einem kleinen Projekt und brauche nun ein bisschen Hilfe...
Ich habe einen Input (zpunkte) und muss diesen Input darauf überprüfen, ob dort auch Zahlen stehen oder ob da gar nichts ist:
zpunkte = int(input("Wie viele Punkte hast du?"))
1 Antwort
Der einfachste und zuverlässigste Weg ist, es auszuprobieren:
>>> int("3")
3
>>> int("")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>> int("bla")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'bla'
>>>
Also wird offenbar eine Exception (ValueError) geworfen, wenn keine Zahl drinsteht. Diese Exception kann man fangen (mit einem try-except-Block).
try:
zpunkte = int(input("Wie viele Punkte hast du?"))
except ValueError:
print("Das war keine Zahl!")
Das wäre keine gute Idee. Die Methode isnumeric() prüft, ob das jeweilige Zeichen in Unicode als "numerisch" gilt - und das sind viele Zeichen, die von int() und Co. nicht in eine Zahl umwandelbar sind. Zum Beispiel:
>>> "½⒍⑪".isnumeric()
True
Um also ganz sicher zu gehen, müsste man eine selbstgestrickte Regex anwenden - da ist es aber wirklich besser und zuverlässiger (und "pythonischer"), sich auf den ValueError zu verlassen.
Besser wäre es allerdings sich das "teure" Exception-Handling zu sparen und z.B. etwas in der Art zu benutzen: