On Fri, Dec 26, 2008 at 1:52 PM, <da...@bag.python.org> wrote: > 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 > ")
raw_input() was renamed input() in Python 3.0, and it returns a *string*, not a *number*. Therefore, you need to convert the string to an int or float. Change the line to: n = float(input("enter a number > ")) And it should work just fine. > 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 You're currently giving it a string, not a number, which is nonsensical, hence the TypeError. I presume ints would be coerced to floats by the function. > 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. You should read "What's New in Python 3.0", it covers changes such as the one you've encountered - http://docs.python.org/3.0/whatsnew/3.0.html Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com -- http://mail.python.org/mailman/listinfo/python-list