Python 对变量使用round()时出错
我以前从未编写过代码,几天前开始使用Python-3.5。 经过一些锻炼后,我试着自己玩。 上次我想创建一个脚本,将输入存储为变量,并将其舍入为三位小数。不幸的是,我尝试这样做时出错: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
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调用,因为我想看看输入的值是否真的分配给了变量。所以这只是为了检查。。。