En Fri, 26 Dec 2008 19:52:24 -0200, <da...@bag.python.org> escribió:
I'm a newbee trying 3.0 Please help with math.sqrt()
At the command line this function works correctly
>>> import math
n = input("enter a number > ")
s = math.sqrt(n)
An entry of 9 or 9.0 will yield 3.0
Yet the same code in a script gives an error message
Script1
import math
n = input("enter a number > ")
s = math.sqrt(n)
Traceback (most recent call last) :
File "<stdin>", line 1, in <module>
File "script1.py" line 3 in <module>
s = math.sqrt(n)
TypeError : a float is required
Entering 9 or 9.0 gives same error message.
According to the math module the results of all
functions are floats. However it says nothing about
inputs.
Strangely the above code runs fine in version 2.5 ( ? )
and will handle large integers.
I've read the documentation for 3.0 including the section
"Floating Point Arithmetic: Issues & Limitations" and it
helps nada.
And you won't find nothing - the change is in "input" behavior, not in the
math functions.
For versions prior to 3.0, there are:
raw_input(message) -> string typed
input(message) -> result of evaluating the string typed
raw_input just returns whatever you type, as a string. Using the input
function, Python evaluates whatever you type to obtain a result: if you
type the three characters "nine" "dot" "zero" the result is the double
9.0; you can even type (17+1)/2.0 to get the same value (try it with your
Python 2.5)
Since version 3.0, input behaves as raw_input in the older versions, and
there is no builtin function equivalent to the old input function.
Use this instead:
n = float(input("enter a number > "))
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list