Как сделать гадалку на пайтон

Гадалка на Python своими руками: карты, звёзды и ☕ за 15 минут. Запусти скрипт — и узнай, что скрывает завтра!

Хотите написать собственную цифровую гадалку на Python от нуля до «дружеской» работающей версии? В этой статье мы разберёмся‚ как всё устроено: начнём с простого генератора предсказаний‚ добавим случайные элементы‚ интерфейс и даже сохраним историю гаданий. Читайте — и через час у вас будет готовая «гадалка на Python»‚ которой можно делиться с друзьями или использовать на Хэллоу-пати.


Что такое гадалка и зачем она нужна в коде?

Гадалка — это приложение‚ которое случайным образом выдаёт «предсказания» пользователю. Это может быть:

  • серьёзная «эксперт-система» на основе анализа текста (цепи Маркова)‚
  • или просто добрый джокер‚ который выдаёт веселые текстовки и избавляет от скуки.

Для изучения Python такой проект идеален: он идёт от самых базовых конструкций (списки‚ циклы‚ random) до более продвинутых (веб-интерфейсы‚ API‚ базы данных).


Что нам понадобится?

  1. Python 3.9+ (подойдёт любой свежий дистрибутив‚ например‚ python.org).
  2. Любой редактор (VS Code‚ PyCharm‚ Thonny).
  3. Виртуальное окружение (venv) или менеджер пакетов poetry / pipenv.
  4. Библиотеки:
    • 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 + озвучку предсказаний.

Готовые примеры в открытом доступе

  1. Flask-гадалка за 30 LOC — GitHub‚ MIT-лицензия.
  2. Purpleschool Python бесплатный миникурс — из которого можно быстро взять паттерны.
  3. Видеоурок: «Генератор гороскопов на 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, мы републикуем крутые работы.