Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 09.08.2018
Сообщений: 7

Словарь с функциями вместо elif

15.10.2018, 08:43. Показов 3663. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Вообщем продолжаю изучать python, и решил для одной из практик написать бота вк (но чтобы не просто "привет", "пока", но и выполнял несколько более сложный функционал)

И у меня по ходе реализации возник вопрос, каким образом можно заменить elif на словарь с функциями?

Ну например:


Python
1
2
3
4
def commads(message):  # вызываем функцию и передаём туда переданное нам сообщение
dict_command={'подписаться':mail(user_id)}
if message in dict_command:   # если в словаре есть такой ключ команды
    dict_command.get(message(user_id)  # то исполняем функцию под этим ключём

Ну как-то так..
Короче это только эскизы в голове..
наведите плиз на верные мысли, и вообще есть ли смысл в таких вещах? будут они работать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2018, 08:43
Ответы с готовыми решениями:

Словарь с функциями
Всем привет. Как сделать чтобы при проходе словаря через цикл, значения (у меня внутри функции) не вызывались shapes = { ...

Словарь вместо структуры класс
Нужно написать словарь с использованием класса. Кто может помогите пожалуйста переделать структуру в класс typedef struct tag_word ...

В чем различие между функциями VBA и функциями Excel?
В чем различие между функциями VBA и функциями Excel. Скажите пожалуйста , в гугле не могу найти)

2
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
15.10.2018, 09:26
Цитата Сообщение от kos92 Посмотреть сообщение
и вообще есть ли смысл в таких вещах? будут они работать?
Работать будет, так часто делают

Python
1
2
3
4
5
6
7
8
9
def mail(id):
    print(id)
 
dict_command={'подписаться':mail}
 
def commads(message):  # вызываем функцию и передаём туда переданное нам сообщение
    dict_command[message](125)
 
commads('подписаться')
0
0 / 0 / 0
Регистрация: 09.08.2018
Сообщений: 7
15.10.2018, 10:24  [ТС]
Есть вероятность, что вы ничего тут не поймёте, но всё же.. почему может не работать?
Это ещё очень сырой набросок кода)) сейчас моя задача добиться работы через словарь.. Но кажется даже не доходит до вызова функции mail

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from flask import Flask, request, json
import vk
token='тут мой токен'
session = vk.Session()
api = vk.API(session, v=5.0)
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def mail(user_id):
    api.messages.send(access_token=token, user_id=user_id, message='я тебя подписал')
    with open('mplus1.txt','a') as out:
        out.write(user_id)
dict_command={'подписаться':mail}
def commands(**kwargs): # вызываем функцию и передаём туда переданное нам сообщение
    message=kwargs['message']
    user_id=kwargs['user_id']
    dict_command[message](user_id)
def processing():
    data = json.loads(request.data)
    #Вконтакте в своих запросах всегда отправляет поле типа
    if 'type' not in data.keys():
        return 'not vk'
    if data['type'] == 'confirmation':
        return 'cb241858'
    elif data['type'] == 'message_new':
        commands(user_id=str(data['object']['user_id']), message = data['object']['body'])
        return 'ok'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2018, 10:24
Помогаю со студенческими работами здесь

Можно ли создать словарь в словаре и чтобы каждый словарь вызывался по ключу?
Ребят, всем привет) Подскажите, можно ли создать словарь в словаре? Например, пишу рецепт торта. Мне надо 3 списка в одном списке под...

Задайте с терминала словарь. Напечатайте те слова исходной строки, которые входят в словарь.
Задана строка ---Задайте с терминала словарь (перечень эталонных слов). Напечатайте те слова исходной строки, которые входят в...

Ввести словарь с клавиатуры. С помщ лямбды отсортировать словарь по убыванию ключа и вывести на экран
Ввести словарь с клавиатуры. С помощью лямбды отсортировать словарь по убыванию ключа и вывести на экран.

Мульти словарь или как генерировать словарь в словаре
Добрый день. Есть большое количество данных, которое на хочется перебирать, и появилась проблема: есть список - как сделать так что...

Не срабатывает elif
Здравствуйте. Такая проблема- if срабатывает не зависимо от истинности (либо выдает ошибку) и elif не срабатывает вообще #словарь у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru