Я делаю первые шаги на Python. Я видел, что у нас нет оператора case switch, , так что бы вы, ребята, реализовали текстовое меню в python?Предложение по реализации текста Меню без корпуса переключателя
Thanks
Я делаю первые шаги на Python. Я видел, что у нас нет оператора case switch, , так что бы вы, ребята, реализовали текстовое меню в python?Предложение по реализации текста Меню без корпуса переключателя
Thanks
Вы могли бы сделать что-то вроде этого :
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()
Это ставит всех вас r возможных действий в словаре, причем ключ является тем, что вы будете вводить для запуска функции. Затем он извлекает действие ввода действия из списка, если только входное действие не существует, и в этом случае оно возвращает no_such_action.
Если у вас есть общее представление о том, как это работает, если вы планируете использовать приложение типа командной строки Serious Business, я бы посмотрел на cmd
framework для приложений с командной строкой.
Вы можете использовать, если ... elif. Если у вас есть, чтобы выбрать номер, это было бы так:
n = chosenOption()
if(n == 0):
doSomething()
elif(n == 1):
doAnyOtherThing()
else:
doDefaultThing()
+1: Python «переключатель» пишется «если»; «case» пишется «elif». – 2008-11-29 20:06:38
Посмотрите на эту topic от «Введение в Python» книги. Оператор switch заменяется на последовательность if..elif..elif.
Обычно, если elif будет в порядке, но если у вас много дел, подумайте об использовании dict.
actions = {1: doSomething, 2: doSomethingElse}
actions.get(n, doDefaultThing)()
К вашему первому вопросу я согласен с Али А.
Для вашего второго вопроса:
импорт SYS
sys.exit (1)
Я пришел сюда в поисках той же вещи, и в конечном итоге написание мой собственный: 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» в качестве своего варианта, тогда для выбора будет присвоено значение «Второе значение». Я мог бы сделать это более увлекательным, но я хотел, чтобы все было просто, хотя запросы на тягу очень приветствуются.
Почему это происходит, если я изменяю словарь на «foo»: action1(),? – 2013-01-15 04:15:07