对变量使用round()时出错

时间:2016-08-15 11:38:27

标签: python python-3.x variables rounding typeerror

我之前从未编写过代码,并且几天前开始使用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中使用相同的逻辑而不是在文件编辑器中呢?提前谢谢!

1 个答案:

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

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