[Tutor] Dividing a float derived from a string

Adam Jensen hanzer at riseup.net
Fri Nov 21 23:21:14 CET 2014


> -----Original Message-----
> From: Tutor [mailto:tutor-bounces+hanzer=riseup.net at python.org] On
> Behalf Of Alan Gauld
> Sent: Thursday, November 20, 2014 7:24 PM

> But that's considered bad practice, it's better to put the valid errors
only in
> the except line like this:
> 
> try:
>      print float(input)*12
> except TypeError, ValueError:
>      print False
> 
> So now Python will look out for any ValueErrors and TypeErrors during the
> first print operation and if it finds one will instead print False. Any
other kind
> of error will produce the usual Python error messages.
> 
> You may not have come across try/except yet, but its a powerful technique
> for dealing with these kinds of issues.

I'm browsing the built-in
[exceptions](docs.python.org/3.4/library/exceptions.html) and reading about
the [float cast](docs.python.org/3.4/library/functions.html#float) and it
seemed like it might be a good idea to catch overflows, so:

try:
    print(float(input('Enter a number: ').replace(' ','')) * 12)
except ValueError:
    print('Not a valid number.')
except OverflowError:
    print('Too big!')
except EOFError:
    print('\nGoodbye.')

I guess TypeError isn't necessary since input() returns a string and that's
a valid type for float(). EOFError is there to handle ^D gracefully.
Curiously, a float cast on a very large number represented as a string
returns 'inf' rather than raising an overflow error. I didn't expect that. 






More information about the Tutor mailing list