建议在没有开关的情况下实现文本菜单

时间:2008-11-29 15:01:29

标签: python

我在Python上迈出了第一步。我看到我们没有switch case语句, 所以我想你们在python中实现一个文本菜单?

由于

6 个答案:

答案 0 :(得分:13)

您可能会这样做:

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。

在您基本了解其工作原理后,如果您正在考虑使用Serious Business命令行类型的应用程序,我会查看cmd framework命令行应用程序。

答案 1 :(得分:5)

一般来说,如果elif会好的,但如果你有很多案件,请考虑使用dict。

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

答案 2 :(得分:2)

你可以使用if ... elif。如果你必须选择一个数字,它将是这样的:

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

答案 3 :(得分:2)

从“Python简介”一书中查看此topic。 Switch语句被if..elif..elif序列替换。

答案 4 :(得分:0)

关于你的第一个问题我同意Ali A。

关于你的第二个问题:

import sys
sys.exit(1)

答案 5 :(得分:0)

我来到这里寻找同样的事情并最终编写自己的: https://github.com/gerrywastaken/menu.py

你这样称呼它:

import menu

message = "Your question goes here"
options = {
    'f': ['[F]irst Option Name', 'First value'],
    's': ['[S]econd Option Name', 'Second value'],
    't': ['[T]hird Option Name', 'Third value']
}

selection = menu.getSelection(message, options)

它向用户显示一个菜单,他们可以通过括号中的字符选择他们想要的选项。如果他们输入“s”作为他们的选项,则选择将被赋予“第二价值”的值。我本可以让它变得更加漂亮,但我想保持简单,尽管拉取请求非常受欢迎。