建议实现一个不使用switch-case的文本菜单

3 投票
6 回答
6001 浏览
提问于 2025-04-11 20:59

我刚开始学习Python。我发现Python没有switch case语句,那么你们会怎么在Python里实现一个文本菜单呢?

谢谢!

6 个回答

2

你可以使用if...elif语句。如果你需要选择一个数字,可以这样写:

n = chosenOption()
if(n == 0):
    doSomething()
elif(n == 1):
    doAnyOtherThing()
else:
    doDefaultThing()
5

一般来说,使用 if 和 elif 就可以了,但如果你有很多种情况,建议考虑用字典来处理。

actions = {1: doSomething, 2: doSomethingElse}
actions.get(n, doDefaultThing)()
15

你可以这样做:

def action1():
    pass # put a function here

def action2():
    pass # blah blah

def action3():
    pass # and so on

def no_such_action():
    pass # print a message indicating there's no such action

def main():
    actions = {"foo": action1, "bar": action2, "baz": action3}
    while True:
        print_menu()
        selection = raw_input("Your selection: ")
        if "quit" == selection:
            return
        toDo = actions.get(selection, no_such_action)
        toDo()

if __name__ == "__main__":
    main()

这段代码把你所有可能的操作函数放进一个字典里,字典的键就是你输入的内容,用来运行相应的函数。然后,它会从列表中获取你输入的操作,如果你输入的操作不存在,就会返回一个叫做 no_such_action 的东西。

在你对这个过程有了基本了解之后,如果你想做一个比较正式的命令行应用程序,我建议你看看 cmd 框架,它专门用于命令行应用。

撰写回答