Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python平方根函数的浮点错误_Python - Fatal编程技术网

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
>>>