Python平方根函数的浮点错误
我有密码:Python平方根函数的浮点错误,python,Python,我有密码: #!/usr/bin/env python import math i = 2 isprime = True n = input("Enter a number: ") while i <= math.sqrt(n): i += 1 if n % i == 0: isprime = False if isprime == False: print("Not Prime") else: print("
#!/usr/bin/env python
import math
i = 2
isprime = True
n = input("Enter a number: ")
while i <= math.sqrt(n):
i += 1
if n % i == 0:
isprime = False
if isprime == False:
print("Not Prime")
else:
print("It's Prime!")
#/usr/bin/env python
输入数学
i=2
isprime=True
n=输入(“输入一个数字:”)
而i输入(…)
返回一个字符串。您正在尝试使用sqrt(“字符串的”)
。使用int(输入(“输入一个数字”)
即使您声称正在使用python2和#/usr/bin/env python
,确保python
实际上是python2。您只需键入以下内容即可进行检查:
/usr/bin/env python
在终端中查看版本号,例如:
% /usr/bin/env python
Python 2.7.2 (default, ...
...
如果将其设置为Python3.x,则这是系统管理员的问题。此不应执行,应立即更改。Python3程序必须使用Python3
调用;这个“调整”将破坏当前Linux系统上的任何python2程序
显然,input
相当于eval(原始输入(…)
,因此在python2中可以工作,但在python3中不能工作
% python2
Python 2.7.2 (default, Aug 19 2011, 20:41:43) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type(input())
5
<type 'int'>
>>>
%python2
linux2上的Python 2.7.2(默认,2011年8月19日,20:41:43)[GCC]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>类型(输入())
5.
>>>
与:
% python3
Python 3.2.1 (default, Jul 18 2011, 16:24:40) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type(input())
5
<class 'str'>
>>>
%python3
linux2上的Python 3.2.1(默认,2011年7月18日,16:24:40)[GCC]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>类型(输入())
5.
>>>
我认为您正在使用Python3
。在蟒蛇3
你从哪里得到的TypeError?你使用的是什么版本的python?我试过:>>>>math.sqrt(2)1.4142135623730951你不应该指责你的语言运行时有错误,除非你非常确定错误1)不在你的代码中,2)不在你的环境中,3)实际上在语言中。请将标题更改为类似“在进行数学运算时出现TypeError.sqrt(输入(“键入数字”))之类的内容”。此外,请考虑删除部分不必要的代码在未来提交。谢谢。这将在Python2.7中工作,因为字符串将被求值。但它在Python3中不起作用,因为在该版本中输入不再被求值raw_input
返回一个字符串,但是input
将返回一个int
或float
,如果这是您输入的内容。从文档来看,input
相当于eval(原始输入(提示))
>>a=input()给出了3.5>>类型(a)给出了有趣的结果,显然input
在python2.7中是一个东西,但在python3中不是。因为这显然是python2,所以删除答案。编辑:事实上,由于这段代码在python2中工作得很好,我认为这个人在某种程度上正在使用python3。是的,这个答案在python3中实际上是正确的。而使用python3是op获得上述异常的唯一方法。python3的使用得到了进一步的支持,因为它看起来好像print
被用作示例代码中的函数。不,你完全正确。只是添加了一些额外的参考资料,虽然我刚刚注意到我复制了你的链接。已经编辑过我的评论了。@Markransem:是的,我知道了。感谢您的输入。有关eval
的必要警告:除非您确定这是您想要的,否则不要使用它;它允许用户在这种情况下运行任意代码。在这种情况下,int
更可取。
>>> x = input()
2
>>> type(x)
<class 'str'>
>>> math.sqrt(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a float is required
>>> math.sqrt(float(x))
1.4142135623730951
>>>