“ NameError:未定义名称'选择'”错误出现

时间:2019-05-03 21:10:50

标签: python python-3.x

我开始在业余时间进行编码,并决定通过制作一个小口袋妖怪式的格斗游戏来挑战自我。我目前正在编码菜单及其选项,但是它出乎意料地开始抛出名称错误。

一旦我移动了代码的位置,它就会起作用,例如,在程序中上下移动被认为是麻烦的代码行,并且这种代码以这种方式工作,无论我希望如何做。

def menu():
    print("\t:What Do You Want To Do:\nA:Play\nB:Login\nC:Exit\nAnswer With Caps Lock On")
    selection = input("Please Choose An Option:")
menu()

valid_option = ['A','B','C']
A = ['A']
B = ['B']
C = ['C']

if selection in valid_option:
    print("...")
else:
    print("Invalid Choice")
    menu()

2 个答案:

答案 0 :(得分:1)

名称selection在函数menu中是 local 。当控件将要退出该功能时,该名称将被破坏。

如果要使用此名称绑定的 value ,则有两种选择:

  1. 使selection为全局变量(并且不要忘记将global selection 放在之前,尝试在函数中对其进行修改)。
  2. return selection,然后使用此返回值,例如:selection = main()

答案 1 :(得分:1)

替换

def menu():
    print("\t:What Do You Want To Do:\nA:Play\nB:Login\nC:Exit\nAnswer With Caps Lock On")
    selection = input("Please Choose An Option:")
menu()

使用

def menu():
    print("\t:What Do You Want To Do:\nA:Play\nB:Login\nC:Exit\nAnswer With Caps Lock On")
    return input("Please Choose An Option:")

selection = menu()

然后,作为强制性作业,阅读有关可变范围(python variable scope的大量结果)。