python名称未定义,即使它是

标签 python nameerror

我知道这是基本的,但实际上我什至不知道我做错了什么。

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() 引发异常,则赋值永远不会发生

要么测试有效的endtry(这样你就知道没有引发异常),或者分配一个默认值给先结束

例如,如果输入了 12 以外的任何内容,以下代码不会抛出您的异常,并且仍会提示用户重新输入数字:

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 的外部;如果抛出异常或者没有执行 breakexit() ,它将被打印出来。请注意,我在这里使用 break 而不是 continue 来退出 while True 循环; continue 只会开始下一次迭代,提示用户再次输入数字。

关于python名称未定义,即使它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443752/

相关文章:

python - 无法在 python 中停止 nameerror

python - Xpath 获取带有子标签的父标签

python - 如何在 PyQt5 中在屏幕上移动一个点?

Python:如何重新启动循环遍历 csv 的 FOR 循环

ruby - 拯救 NameError 而不是 NoMethodError

Python 模块导入名称错误

python - 如何修复 Python 3.x 中 input() 函数中的 NameError?

python - 执行 Django manage.py syncdb 时出错

python - 如何在 Python 中复制二进制文件的一部分?

python pdb lambda函数全局名称错误