我知道这是基本的,但实际上我什至不知道我做错了什么。
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
只会开始下一次迭代,提示用户再次输入数字。
关于python名称未定义,即使它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443752/