我有一段代码用于验证用户输入的数据,以确保只采用大于零的数字,如下所示:
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:还有,任何人都可以准确解释为什么正在发生?答案 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循环下的代码没有缩进),但这不是一个很大的交易,我想这里;)
我希望我能帮忙!