Float Bug On Square Root Function Python
Solution 1:
input(...)
returns a string. You are trying to take the sqrt("of a string")
. Use int(input("Enter a number: "))
instead.
Even though you claim to be using python2 with #!/usr/bin/env python
, make sure that python
is actually python2. You can check this by just typing:
/usr/bin/env python
In a terminal and looking at the version number, e.g.:
% /usr/bin/env python
Python2.7.2 (default, ...
...
If it is set to Python 3.x, this is a problem with your system administrator. This should not be done and should immediately be changed. Python3 programs must be invoked with python3
; this "tweak" will break any python2 programs on the current Linux system.
Apparently input
is equivalent to eval(raw_input(...))
so would work in python2, but wouldn't in python3.:
% python2
Python 2.7.2 (default, Aug 192011, 20:41:43) [GCC] on linux2
Type"help", "copyright", "credits"or"license"for more information.
>>> type(input())
5
<type'int'>
>>>
Versus:
% python3
Python 3.2.1 (default, Jul 182011, 16:24:40) [GCC] on linux2
Type"help", "copyright", "credits"or"license"for more information.
>>> type(input())
5
<class'str'>
>>>
Solution 2:
I think you are using Python3
. In python3 input returns string.
>>> x = input()
2>>> type(x)
<class'str'>
>>> math.sqrt(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a floatis required
Type-cast string
to float
and it should work just fine.
>>>math.sqrt(float(x))
1.4142135623730951
>>>
Post a Comment for "Float Bug On Square Root Function Python"