Seite 1 von 1

casting richtig?

Verfasst: Donnerstag 1. September 2016, 16:49
von Brando
Hallo,

in einem Textfeld wird eine Zahl eingelesen. Dies ist ein Stringwert. Dann führe ich die Operation float(input) aus. Allerdings kann der input auch ein Buchstabe sein, und ich möchte, wenn dies auftritt dem User eine Rückmeldung geben, dass er eine Zahl eingeben soll. Wie erreiche ich das?
Folgender Code funktioniert nicht:

Code: Alles auswählen

   zahl_liegt_vor=True
   try: 
      float(z.value)
   except NameError:
     zahl_liegt_vor=False
Sobald das casting nicht funktioniert wird lediglich die Fehlermeldung ausgegeben:

could not convert string to float:

Re: casting richtig?

Verfasst: Donnerstag 1. September 2016, 17:52
von Hyperion
Probiere es einfach in einer Python-Shell aus:
[codebox=pycon file=Unbenannt.txt]
In [1]: float("text")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-25fbfda44a03> in <module>()
----> 1 float("text")

ValueError: could not convert string to float: 'text'
[/code]
Das Interessante steht ganz unten: ``ValueError`` ist also der Typ der Ausnahme, die Du behandeln musst - nicht ``NameError`` ;-)

Re: casting richtig?

Verfasst: Donnerstag 1. September 2016, 18:43
von Sirius3
@Brando: und der except-Block ist ja gerade dazu da, dass man kein Flag braucht.