使用带有十进制数的int()

时间:2015-11-03 18:22:27

标签: python python-2.7 floating-point decimal

我有一段代码用于验证用户输入的数据,以确保只采用大于零的数字,如下所示:

while True:
x = raw_input("Please enter a number greater than zero.")
try:
    x = int(x)
    num = True
except ValueError:
    print "Sorry, you entered an invalid input. Please ensure you enter only numbers  greater than zero."
if x > 0:
    if num == True:
            break
elif x <= 0:
    print "Sorry, you entered an invalid input for time. Please ensure you enter only positive numbers. \n"

但是,这句话是捕获大于零的十进制数,我想通过它。为了防止这种情况发生,我应该改变什么?

P.S:还有,任何人都可以准确解释为什么正在发生?

2 个答案:

答案 0 :(得分:2)

使用float而不是int。 Float允许小数,并且会为非数字的字符串引发错误。

答案 1 :(得分:1)

至于为什么这是发生的部分:

使用 int(值)将始终向下舍入值。即使0.99也会变为0,这就是你的系统捕获小数的原因。根据MartínMuñozdelRío的建议,使用 float 将不会回合,这就是它起作用的原因。

作为附注,使用

if num == True:
您的代码中的

可以简化为

if num:

因为你之前已经将num设置为布尔值(num = True)。

此外,你的代码有一个缩进错误(while循环下的代码没有缩进),但这不是一个很大的交易,我想这里;)

我希望我能帮忙!