我之前从未编写过代码,并且几天前开始使用Python-3.5。 经过一些运动后,我试着自己玩。 上次我想创建一个脚本,将输入存储为变量并将其舍入为三位小数。不幸的是,当我尝试这样做时,我收到了错误:
round (spam, 3)
TypeError: type str doesn't define __round__ method"
我试图在Q& A中查看这个内容,但是你们似乎有更复杂的问题与这个错误信息有关。
因此,当我收到错误消息时,这是我在文件编辑器中输入的内容:
print('Pls enter value')
spam = input()
#print(spam)
round(spam, 3)
当我在交互式shell中输入以下内容时,舍入似乎仍然有效:
>>> spam = 3.666666
>>> round (spam, 3)
3.667
那么为什么在shell中使用相同的逻辑而不是在文件编辑器中呢?提前谢谢!
答案 0 :(得分:2)
不同之处在于,在第二种情况下,您使用浮点文字(即spam
)提供spam = 3.666666
的值,而在第一种情况下,您可以通过调用{{1}来获取它这不完全相同。
函数input()
在Python 3中返回input()
个实例,对于str
类型,str
函数没有多大意义;你需要通过用round
包裹input()
的结果将它显式转换为浮点数:
float()
现在,您可以在其上调用spam = float(input()) # change input to 'float' type
。您确实需要要小心您实际提供的输入确实可以转换为round
,否则将会引发float
。
除此之外,无需在ValueError
之前添加print
调用,input
有一个input
参数,允许您在提交输入之前指定文字:< / p>
prompt
现在,您应该在两种情况下得到类似的结果。