我知道这是基本的,但实际上我什至不知道我做错了什么。
while True:
try:
end=int(input("If You Dont Want To Buy Anything Press 1 To Exit\nOr If You Would Like To Try Again Please Press 2"))
except ValueError:
print("\nPlease Enter Only 1 Or 2")
if end==1:
exit()
elif end==2:
continue
我确实在开始时定义了结束,但错误是 NameError: name 'end' is not defined 我什至尝试过将 end 设为全局。
请您参考如下方法:
end 仅在没有 ValueError 时才分配给。如果 int() 引发异常,则赋值永远不会发生。
要么测试有效的end值在try(这样你就知道没有引发异常),或者分配一个默认值给先结束。
例如,如果输入了 1 或 2 以外的任何内容,以下代码不会抛出您的异常,并且仍会提示用户重新输入数字:
while True:
try:
end=int(input("If You Dont Want To Buy Anything Press 1 To Exit\nOr If You Would Like To Try Again Please Press 2"))
if end==1:
exit()
elif end==2:
break
except ValueError:
pass
print("\nPlease Enter Only 1 Or 2")
请注意,我将 print() 移动到了 except block 的外部;如果抛出异常或者没有执行 break 或 exit() ,它将被打印出来。请注意,我在这里使用 break 而不是 continue 来退出 while True 循环; continue 只会开始下一次迭代,提示用户再次输入数字。
