使用带十进制数的 int()

Using int() with decimal numbers

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

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:还有,谁能准确解释一下为什么会发生这种情况?

使用 float 而不是 int。 Float 允许小数,但对于不是数字的字符串会引发错误。

至于为什么这部分发生了:

使用 int(value) 将始终向下舍入值。即使是 0.99 也会变成 0,这就是您的系统捕捉小数点的原因。按照 Martín Muñoz del Río 的建议,使用 float 不会舍入,这就是它起作用的原因。

作为旁注,使用

if num == True:

您的代码可以简化为

if num:

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

另外,你的代码有一个缩进错误(while 循环下的代码没有缩进),但我想这没什么大不了的 ;)

希望能帮到你!