建议实现一个不使用switch-case的文本菜单
我刚开始学习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
框架,它专门用于命令行应用。