Наш гороскоп точен и прост! Сбросим иго астрологов!
Если вы верите в гороскопы, для вас плохая новость: все гороскопы основаны на психологическом эффекте Барнума (осторожно, ссылка ведёт на Википедию). Поэтому любая пространная фраза, сказанная конкретно для вашего знака зодиака, может восприниматься как достоверный сигнал судьбы. А значит, в гороскопах можно писать любую чушь при условии, что она достаточно неконкретная и приписана к знакам зодиака.
Но зачем писать чушь, когда её можно запрограммировать? Сегодня мы напишем программу, которая будет выдавать нам персональный гороскоп по запросу. Работать она будет так:
- выводит 12 чисел, рядом с каждым написан свой знак зодиака;
- вы вводите число, которое соответствует вашему знаку;
- получаете в ответ персональный гороскоп на сегодняшний день.
Звучит просто, делается тоже быстро. Летс код.
Логика гороскопа
Если помните, мы уже писали программу, которая выдаёт более-менее осмысленный текст. Сегодня мы не будем настолько глубоко погружаться в код, а сделаем попроще. Но никто не мешает взять логику из той программы и прикрутить к этой: если сделаете это сами, то заработаете +100 к новой профессии.
Гороскоп будет работать так:
- текст гороскопа состоит из трёх предложений;
- первое предложение выбирается случайным образом из пяти заготовок;
- второе предложение состоит из двух частей, каждая из которых тоже выбирается случайным образом;
- третье предложение делается так же, как и первое;
- программа выводит числа и ждёт ответ;
- если пользователь ввёл число от 1 до 12, выдаёт текст гороскопа, иначе выводит сообщение об ошибке.
Готовим текст
Задача этого этапа — написать текстовые заготовки, из которых будет собираться наш гороскоп. Главная сложность в том, чтобы сделать их связными по звучанию между собой, в каком порядке они бы ни были.
Первое предложение делаем вводным, оно задаёт тон всему гороскопу. Второе предложение разбиваем на две части и каждую из них пишем отдельно. Проблема та же самая — написать окончания предложений так, чтобы они подходили ко всем началам. Это сложнее, чем кажется, поэтому уделите этому побольше времени.
К третьему предложению мы устали и решили написать там полную дичь. Основное условие — дичь должна звучать гармонично и казаться логичным продолжением гороскопа.
Мы остановились на трёх предложениях, но можно сделать и тридцать три, если есть время и желание поупражняться в написании текста ни о чём.
Последнее, что сделаем в самом начале — подключим модуль, который отвечает за случайные события. Именно с его помощью мы будем выбирать, какие предложения показывать в готовом тексте.
Выбираем знак зодиака
Для этого мы выводим на экран все 12 знаков зодиака и ставим перед каждым число. Затем спрашиваем у пользователя, кто он по гороскопу, чтобы получить от него соответствующее число.
Чтобы текст вопроса не сливался с предыдущим выводом списка, раскрасим наш вопрос в синий цвет. Для этого используем свойство format — оно определяет, как будет визуально выглядеть наш текст.
Следующий момент — по умолчанию Python любой введённый ответ будет считать строкой, а не числом. Чтобы нам получить именно число, преобразуем сразу ввод в числовой формат командой int(). Она принудительно переводит строку в число, которое мы дальше будем проверять на правильность.
Важное замечание: у нас в программе нет проверки на правильность перевода строки в число. Если пользователь вместо числа напишет «Привет!», то программа остановится и выдаст ошибку. Мы надеемся на то, что все будут вводить именно числа, но это неправильный подход. В следующей версии мы добавим такую проверку и покажем, как это сделать.
Выводим готовый текст
Наша задача — проверить, попадает ли введённое число в интервал от 1 до 12. Python умеет делать множественное сравнение — это значит, что мы можем узнать, лежит ли наше число в нужных границах или нет.
Если лежит — выводим текст гороскопа, предложение за предложением. Для этого используем команду random.choice() — она возвращает случайный элемент из списка (массива), кортежа или любой другой переменной с однотипными данными. В нашем случае мы положим в неё названия наших переменных с предложениями, и она случайным образом выберет их оттуда.
Если введённое число в нужный диапазон не попало, то говорим пользователю, что он ошибся, и на этом программа заканчивается.
Готовый код
Что дальше
Дальше мы сделаем такое:
- добавим проверку на правильность введённого значения при выборе знака зодиака;
- добавим больше текста в гороскоп;
- прикрутим к нему телеграм-бота, который по запросу будет присылать вам гороскоп на компьютер или телефон.
Подписывайтесь на наш канал, чтобы ничего не пропустить!