Собрать в словарь, который загружается из файла/базы?
а как это сравнивать?
делаешь словарь answers = {"question1": "response1" ...} запись алгоритма на скрине станет покороче
Ну даже не знаю. Наверное стоит подумать немного и погуглить как можно со словарями работать.
Ну это для начала. А вторым этапом - вытащить всё в базу или файл, в которых это всё легко будет настраиваться и динамически загружаться. В коде данные хранить это моветон.
согласен с хакерманом словарь еще лучше в файл вынести
Хакерман плохого не посоветует.
типо тот же словарь, но не в коде, а в файле?
Типа тот же словарь, но не в коде, а в файле. Именно так. Либо в реляционной базе данных.
ну наверное если у тебя всего 3-5 ответов то это не так важно, но впще такие штуки разумно хранить отдельно чтобы облегчить восприятие кода
понял, спасибо всем
В принципе в коде оставлять данные, конфигурацию и т.п. очень и очень плохо. За исключением констант всяких вроде кодов ошибок и подобного. Сохранять доступы к базам, какие-то вот пользовательские данные вроде того что у Алекса низя. В файлы всё. Есть куча форматов удобных - YAML, JSON, TOML, INI, XML - какие угодно. Хоть в бинарники пакуй.
а если не просто отправляется сообщение, а еще что-то происходит, как такое упростить? или никак? только иф?
Можно сделать словарь из методов, которые вызываются при том или ином условии. Why not?
Вариантов много, надо просто подумать. Ну сделай в тот же TOML не просто вопрос-ответ, а ещё сделай название метода, который вызывать в ответ на тот или иной вопрос. Ответ, например, оставь пустым при этом. Придёт вопрос "пришли мне дикпик", оно тебе на слово "дикпик" стриггерится, например, и вызовет метод отправки фотографии заранее тобой подготовленной.
При этом никто не запрещает тебе проверять чётко на содержимое вопроса, а делать какой-нибудь regexp. Ну или другой какой-нибудь метод для обнаружения того, что ему говорят.
Обсуждают сегодня