我目前有这段代码:
yon = raw_input("were you running in km y or n?: ")
if yon is "y":
kilnumber = raw_input("how many kilometers?: ")
milnumber = 0
try:
float(kilnumber)
except:
print "You must enter a number"
exit()
如果用户输入非法回复,我希望通过添加while循环来重新询问kilnumber来简化它。我希望有这样的事情:
yon = raw_input("were you running in km y or n?: ")
if yon is 'y':
kilnumber = raw_input("how many kilometers?: ")
milnumber = 0
while float(kilnumber) is ValueError:
print "You must enter a number"
kilnumber = raw_input("how many kilometers?: ")
此代码不起作用,因为它在评估while循环之前发送错误消息。溶液
答案 0 :(得分:5)
float(kilnumber)
永远不会评估为ValueError
。相反,它可能会抛出ValueError
。你需要抓住它:
while True:
try:
float(kilnumber)
except ValueError:
# Not a valid number
print "You must enter a number"
kilnumber = raw_input("how many kilometers?: ")
else:
# No error; stop the loop
break
有关例外和错误的更多信息,请参阅tutorial。
答案 1 :(得分:0)
您认为这意味着什么?
while float(kilnumber) is ValueError:
float(kilnumber)
永远不会是ValueError
,它可以抛出一个。所以你必须使用try/catch
。您可以将其放入while
循环中,以检查指示输入了正确数据的变量。