Хотите написать собственную цифровую гадалку на Python от нуля до «дружеской» работающей версии? В этой статье мы разберёмся‚ как всё устроено: начнём с простого генератора предсказаний‚ добавим случайные элементы‚ интерфейс и даже сохраним историю гаданий. Читайте — и через час у вас будет готовая «гадалка на Python»‚ которой можно делиться с друзьями или использовать на Хэллоу-пати.
Что такое гадалка и зачем она нужна в коде?
Гадалка — это приложение‚ которое случайным образом выдаёт «предсказания» пользователю. Это может быть:
- серьёзная «эксперт-система» на основе анализа текста (цепи Маркова)‚
- или просто добрый джокер‚ который выдаёт веселые текстовки и избавляет от скуки.
Для изучения Python такой проект идеален: он идёт от самых базовых конструкций (списки‚ циклы‚ random) до более продвинутых (веб-интерфейсы‚ API‚ базы данных).
Что нам понадобится?
- Python 3.9+ (подойдёт любой свежий дистрибутив‚ например‚ python.org).
- Любой редактор (VS Code‚ PyCharm‚ Thonny).
- Виртуальное окружение (
venv) или менеджер пакетовpoetry / pipenv. - Библиотеки:
random(встроен в Питон).treys— если захотим предсказать карточное будущее (о нём ниже).flask‚ если сделаем web-версию.
Устанавливаем необходимое:
pip install flask
Минимальный вариант: генератор «да / нет»
До того как разводить циклы‚ напишем скрипт‚ который отвечает «да»/«нет»/«неясно».
import random
answers = [
"О‚ да!"‚
"Нет‚ никогда."‚
"Ответ туманен‚ попробуй позже."‚
"Безусловно!"‚
"Сомневаюсь."‚
]
def ask(question):
return random.choice(answers)
if __name__ == "__main__":
while True:
q = input("Твой вопрос: ")
if q.lower == "exit":
print("Пока-пока!")
break
print(ask(q))
Сохраните файл как simple_oracle.py и запустите:
python simple_oracle.py
Развиваем идею: добавляем список предсказаний
Теперь у нас будет 36 нумерованных записок‚ из которых 30 с предсказаниями.
Данный элемент «вдохновлён» постом 17 декабря 2020 г.
predictions = [
"Сегодня тебе повезёт в неожиданном деле."‚
"Стоит приготовить кошелёк — деньги придут к концу недели."‚
"Попробуй что-то новое: удача там."‚
# … и 27 строк до конца
]
Функция для вывода:
def get_prediction:
return f"🔮 Ваше предсказание: {random.choice(predictions)}"
Анализ рук: угадываем карточное будущее
Для азартных: можно подключить treys — это слегка лёгкая оболочка для оценки покерных карт.
from treys import Evaluator
import random
deck = list(range(52)) # 52 карты
random.shuffle(deck)
hand = deck[:2] # Две «тебя» карты
board = deck[2:7] # Флоп/тёрн/ривер
evaluator = Evaluator
score = evaluator.evaluate(board‚ hand)
print("Текущая комбинация оценивается в"‚ score)
category = evaluator.get_rank_class(score)
print(Cards.get_rank_string(category))
Можно поиграться: если ранг Royal Flush‚ то выдавать позитивное предсказание‚ «сторона тумана» — негативное и т. д.
Даём лицо: заключаем всё в Flask
Итак‚ у нас уже есть логика. Создадим простое web-приложение на Flask.
Файловая структура:
- app.py — основной контроллер.
- static/, css-файлы на ваш вкус.
app.py
from flask import Flask‚ render_template‚ request‚ jsonify
import random‚ datetime
app = Flask(__name__)
predictions = [
"Сегодня тебе повезёт в дружбе."‚
"Стоит сменить обстановку — успех найдёт рядом."‚
"Поговорите с начальником."‚
# … 30 строк
]
@app.route("/")
def fortune_form:
@app.route("/tell"‚ methods=["POST"])
def fortune:
pr = random.choice(predictions)
timestamp = datetime.datetime.now.strftime("%H:%M:%S")
return jsonify({"prediction": pr‚ "time": timestamp})
<html>
<head>
<title>Гадалка на Python</title>
<meta charset="utf-8">
</head>
<body>
<h1>🔮 Python-гадалка онлайн</h1>
<button onclick="tell">Новое предсказание</button>
<div id="result"></div>
<script>
async function tell {
const res = await fetch("/tell"‚ {method:'POST'});
const json = await res.json; json.time + ", " + json.prediction;
}
</script>
</body> Запуск:
export FLASK_APP=app.py python -m flask run --port 5000
Откройте http://127.0.0.1:5000 — и у вас готовая онлайн-гадалка на Python!
Сохранение истории
a) Через CSV-файл
Добавляем:
import csv‚ os
def save_to_csv(text):
file_exists = os.path.isfile("log.csv")
with open("log.csv"‚ "a"‚ newline='') as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow(["timestamp"‚"prediction"])
writer.writerow([datetime.datetime.now‚ text])
b) Через SQLite
import sqlite3
conn = sqlite3.connect("fortunedb.sqlite")
conn.execute("""CREATE TABLE IF NOT EXISTS fortunes
(id INTEGER PRIMARY KEY AUTOINCREMENT‚
text TEXT‚ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);""")
conn.commit
Идеи для дальнейшего улучшения
- Цепи Маркова: сделать предсказания‚ которые учатся на ваших старых текстах.
- OpenAI API: позволить ИИ составить уникальное предсказание.
- Telegram-бот: 10 минут — и гадалка пишет вас на Telegram.
- Анимация рук рода arcade: пускай руки колышутся перед выдачей загадки.
- Аудио-поддержка: поставить speech-to-text + озвучку предсказаний.
Готовые примеры в открытом доступе
- Flask-гадалка за 30 LOC — GitHub‚ MIT-лицензия.
- Purpleschool Python бесплатный миникурс — из которого можно быстро взять паттерны.
- Видеоурок: «Генератор гороскопов на Python» (USMFOX AI) — YouTube‚ перейдите через Поиск.
Контакты и обратная связь
- Телеграм-канал: @pyfortune, делитесь скринами и получайте код-обновления.
- Email: support@python-fortune.ru, для сложных вопросов и pull-реквестов.
- Discord-сервер: https://discord.gg/K3qU7uZn87 — чат помощи 24/7.
- По предложениям: Личный Telegram разработчика
- Bug-report и issues: GitHub Issues
- Почтовый ящик: 12334‚ Москва‚ а/я 52, для «бумажных» гадалок (шутка

Спасибо‚ что дочитали до конца!
Создали свою гадалку на Python? Сфотографируйте‚ опубликуйте и отметьте тегом #pythonfortune, мы републикуем крутые работы.