Есть ли другие способы выполнить sh эту задачу в Python? - PullRequest
0 голосов
/ 27 марта 2020

Это может быть глупый вопрос, но мне было интересно, смогу ли я выполнить эту задачу, используя словарь или какой-то массив? Я попытался использовать словарь, подобный этому, и он просто вызывает все функции.

Моя цель - вызвать конкретную функцию c, если пользователь вводит ключевое слово, но я хочу избегать использования таких длинных, если и еще заявления.

Вот что я пробовал:

def Func1():
    print ("This is func1")

def Func2():
    print ("This is func2")

def Func3():
    print ("This is func3")

functions = {"/func1" : Func1(), "/func2" : Func2(), "/func3" : Func3()}

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Создайте словарь, который содержит функцию объекты , но на самом деле не вызывает их:

def func1():
    print("I am function 1")

# etc for func2 and func3

functions = {
    "func1": func1,
    "func2": func2,
    "func3": func3
}
answer = input("Which function do you want to call? ")
if answer in functions:
    # find the correct function object and call it
    functions[answer]()
else:
    print("I can't find that function.")
1 голос
/ 27 марта 2020

Гораздо более простой способ сделать это - просто найти функцию, соответствующую команде, которую дает пользователь

def Func1():
    print ("This is func1")

def Func2():
    print ("This is func2")

def Func3():
    print ("This is func3")

functions = {"/func1" : Func1, "/func2" : Func2, "/func3" : Func3}
user_input = input("Enter command> ")
functions[user_input]()

Также убедитесь, что скобки удалены из функций, хранящихся в словаре, или они будет выполняться при запуске сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...