Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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 对变量使用round()时出错_Python_Python 3.x_Variables_Rounding_Typeerror - Fatal编程技术网

Python 对变量使用round()时出错

Python 对变量使用round()时出错,python,python-3.x,variables,rounding,typeerror,Python,Python 3.x,Variables,Rounding,Typeerror,我以前从未编写过代码,几天前开始使用Python-3.5。 经过一些锻炼后,我试着自己玩。 上次我想创建一个脚本,将输入存储为变量,并将其舍入为三位小数。不幸的是,我尝试这样做时出错: round (spam, 3) TypeError: type str doesn't define __round__ method" 我试着在问答中查找这个问题,但你们似乎有更复杂的问题与这个错误有关 这就是我在文件编辑器中输入的错误消息: print('Pls enter value') spam = i

我以前从未编写过代码,几天前开始使用Python-3.5。 经过一些锻炼后,我试着自己玩。 上次我想创建一个脚本,将输入存储为变量,并将其舍入为三位小数。不幸的是,我尝试这样做时出错:

round (spam, 3)
TypeError: type str doesn't define __round__ method"
我试着在问答中查找这个问题,但你们似乎有更复杂的问题与这个错误有关

这就是我在文件编辑器中输入的错误消息:

print('Pls enter value')
spam = input()
#print(spam)
round(spam, 3)
当我在交互式shell中输入以下内容时,舍入似乎起作用:

>>> spam = 3.666666
>>> round (spam, 3)
3.667

那么,为什么相同的逻辑在shell中工作,而在文件编辑器中不工作呢?提前谢谢

不同之处在于,在第二种情况下,您使用浮点文本(即,
spam=3.666666
)提供
spam
的值,而在第一种情况下,您通过调用
input()
获得的值并不完全相同

函数
input()
在Python 3中返回一个
str
实例,对于
str
类型,
round
函数没有多大意义;您需要通过将
input()
的结果包装为
float()
,将其显式转换为浮点:

现在,您可以在它上面调用
round
。您确实需要注意,您实际提供的输入确实可以转换为
浮点
,否则将引发
ValueError

除此之外,无需在
input
之前添加
print
调用,
input
有一个
prompt
参数,允许您在提交输入之前指定文本:

spam = input("Enter valid float number: ") 

这两种情况下,您现在应该得到类似的结果。

不同之处在于,在第二种情况下,您使用浮点文本(即,
spam=3.666666
)提供
spam
的值,而在第一种情况下,您通过调用
input()
获得的值并不完全相同

函数
input()
在Python 3中返回一个
str
实例,对于
str
类型,
round
函数没有多大意义;您需要通过将
input()
的结果包装为
float()
,将其显式转换为浮点:

现在,您可以在它上面调用
round
。您确实需要注意,您实际提供的输入确实可以转换为
浮点
,否则将引发
ValueError

除此之外,无需在
input
之前添加
print
调用,
input
有一个
prompt
参数,允许您在提交输入之前指定文本:

spam = input("Enter valid float number: ") 

现在,两种情况下的结果应该相似。

非常感谢Jim!现在一切都好了!我只在输入之前有print调用,因为我想看看输入的值是否真的分配给了变量。所以这只是为了检查…非常感谢吉姆!现在一切都好了!我只在输入之前有print调用,因为我想看看输入的值是否真的分配给了变量。所以这只是为了检查。。。