Python切换器不可访问

Python切换器不可访问,python,Python,我正在尝试进行一个简单的字典映射,但我得到一个错误,指出切换器无法访问 def option_select(option): switcher = { 1: "Option One", 2: "Option Two", 3: "Option Three", 4: "Option Four", 0: sys.exit() } return switcher.get(option, "Invali

我正在尝试进行一个简单的字典映射,但我得到一个错误,指出
切换器
无法访问

def option_select(option):
    switcher = {
        1: "Option One",
        2: "Option Two",
        3: "Option Three",
        4: "Option Four",
        0: sys.exit()
    }
    return switcher.get(option, "Invalid choice")


print("Please select an option:")
print("1: Add a new student.")
print("2: Delete an existing student.")
print("3: List all students.")
print("4: Search for a student.")
print("0: Exit")
optionChoice = int(input("Selection: "))

option_select(optionChoice)

switcher
的定义将执行
sys.exit()
,程序将结束

您使用的
switcher
不是switch语句;它是一个字典,您可以在其中将键
0
映射到
sys.exit()
的返回值。为了确定该值并创建字典,将执行
sys.exit()
sys.exit()
退出程序

最简单的解决方法是单独处理退出:

def option_select(option):
    if option==0:
        sys.exit()
    switcher = {
        1: "Option One",
        2: "Option Two",
        3: "Option Three",
        4: "Option Four",
    }
    return switcher.get(option, "Invalid choice")
或者您可以编写
切换器
,以便每个值都可以调用:

switcher = {
    1: add_student,
    2: delete_student,
    3: list_students,
    4: search_students,
    0: sys.exit,
}
并将值定义为函数,然后可以调用从字典中得到的结果来执行它应该执行的任何操作

例如


switcher
的定义将执行
sys.exit()
,您的程序将结束。您能否进一步解释该逻辑?为什么如果
1
作为参数给出,它仍然会下降到
0
?如果所有的值都是函数,也就是说
switcher={1:do\u foo,2:do\u bar,…,0:sys.exit}
,会更有意义。(注意:没有
()
)@Colin747,因为它不是
开关
语句。这是一本字典。您的定义创建了整个字典,而不仅仅是您最终使用的任何一个位。我现在有以下内容,但如果我将
1
作为选项,它仍然调用
1
2
-这是正确的使用方法吗?(我来自Java背景,我试图将其用作switch语句。
switcher={1:create_new_student(),2:test_function(),0:sys.exit}
No,删除
()
。否则,您在定义字典时调用函数。我尝试过这样做,但当我将
1
作为选项传入时,该函数似乎没有被调用。您可以在从字典中获取该函数后调用它。例如
switcher[option]()
。好的,看起来它正在工作。我想你的意思是
返回切换器[选项]()
switcher[option]()