Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2018 16:35:17

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

Добрый рабочий. Не знаю как реализовать одну штуку. Надо чтобы по значению переменной, использовалась та или иная функция. например если переменная b = 1, то используется функция Quest_1, а если значение переменной b = 5, то используется функция Quest_5. Как реализовать?

Офлайн

#2 Авг. 17, 2018 21:13:30

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

Как обычно:

 def Quest_1():
    print('Выполняем функцию "Quest_1"')
    
def Quest_2():
    print('Выполняем функцию "Quest_2"')
    
def Quest_3():
    print('Выполняем функцию "Quest_3"')
    
def Quest_4():
    print('Выполняем функцию "Quest_4"')
    
def Quest_5():
    print('Выполняем функцию "Quest_5"')
    
b = 5      #меняем значения переменной
    
if b == 1:
    Quest_1()
elif b == 2:
    Quest_2()
elif b == 3:
    Quest_3()
elif b == 4:
    Quest_4()
elif b == 5:
    Quest_5()
else:
    print('Нет такой функции')

Офлайн

#3 Авг. 17, 2018 21:23:13

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

Спасибо конечно, весьма оригинально. Но у меня таких функций 58 и хотелось бы узнать, существует ли более оптимальный и сжатый вариант?

Офлайн

#4 Авг. 17, 2018 21:26:49

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

 s = {
            1: Quest_1,
            2: Quest_2,
            3: Quest_3, .....
}
res = s[b]()



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Авг. 17, 2018 23:30:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

  
>>> def quest_1():
...     print('выполняем функцию "quest_1"')
... 
>>> def quest_2():
...     print('выполняем функцию "quest_2"')
... 
>>> def quest_3():
...     print('выполняем функцию "quest_3"')
... 
>>> def quest_4():
...     print('выполняем функцию "quest_4"')
... 
>>> def quest_5():
...     print('выполняем функцию "quest_5"')
... 
>>> funcs = (quest_1, quest_2, quest_3, quest_4, quest_5)
>>> 
>>> for i in range(5):
...     funcs[i]()
... 
выполняем функцию "quest_1"
выполняем функцию "quest_2"
выполняем функцию "quest_3"
выполняем функцию "quest_4"
выполняем функцию "quest_5"
>>>



Офлайн

#6 Авг. 20, 2018 06:52:59

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функций по значению переменной

Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version