我目前有这个代码:
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()
Run Code Online (Sandbox Code Playgroud)
如果用户输入非法响应,我希望通过添加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?: ")
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为它在评估while循环之前发送错误消息.解?
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
Run Code Online (Sandbox Code Playgroud)
有关异常和错误的更多信息,请参阅教程.