Python код программы для гадания на картах таро

Запусти скрипт и узнай, что готовит судьба — магия Таро в каждой строке Python!

Хотите создать собственный цифровой «оракул», который будет «тянуть» карты Таро прямо на экране вашего компьютера? Ниже вы найдёте полностью рабочий, легко расширяемый скрипт на Python 3.12+, который:

  • содержит 22 Старших аркана и 56 Младших;
  • перемешивает колоду случайным образом;
  • выполняет расклад «карта дня» или «кельтский крест»;
  • выводит результаты в консоль и (по желанию) сохраняет их в файл.

Установка окружения

Убедитесь, что у вас установлена Python 3.12.x (или самая свежая из стабильных веток).
Дополнительных библиотек требуется всего одна, rich, для красивого цветного вывода:

pip install rich

Структура проекта

tarot_bot/
├── tarot.py # главный файл
├── deck.json # описание колоды
└── history.txt # журнал раскладов (создается автоматически)

deck.json

Файл содержит всю «мета-информацию» о картах: название, аркан (старший/младший), ключевые слова, перевёрнутое значение.

{
 "cards": [
 {
 "name": "Шут",
 "arcana": "major",
 "upright_keywords": ["начало", "спонтанность", "свобода"],
 "reversed_keywords": ["безрассудство", "риск", "ограничения"]
 },
 ...
 ]
}

Полный код tarot.py

#!/usr/bin/env python3

"""
Простой электронный оракул на картах Таро.
Поддерживает расклады:
 
  • 'daily' — Карта дня
  • 'cc' — Кельтский крест (10 карт)
""" import json, random, datetime from pathlib import Path from rich.console import Console from rich.text import Text console = Console class TarotDeck: """Класс колоды Таро.""" def __init__(self, deck_file='deck.json'): self.cards = json.loads(Path(deck_file).read_text(encoding='utf-8'))['cards'] self._reset def _reset(self): self.deck = self.cards.copy random.shuffle(self.deck) def draw(self, n=1): """Вытянуть n карт.""" if n > len(self.deck): self._reset drawn = self.deck[:n] self.deck = self.deck[n:] return drawn class Reading: """Один расклад.""" def __init__(self, spread='daily'): self.spread = spread self.timestamp = datetime.datetime.now.strftime('%Y-%m-%d %H:%M:%S') self.deck = TarotDeck self.positions = self._get_positions self.cards = self.deck.draw(len(self.positions)) def _get_positions(self): if self.spread == 'daily': return ['Карта дня'] elif self.spread == 'cc': return [ 'Прошлое', 'Настоящее', 'Будущее', 'Причина', 'Надежды/страхи', 'Внешнее влияние', ] else: raise ValueError('Неизвестный расклад') def _orientation(self): # 50 % шанс перевёрнутой карты return 'Перевёрнута' if random.random < 0.5 else 'Прямая' def show(self): table = [] for pos, card in zip(self.positions, self.cards): orientation = self._orientation keywords = ', '.join( card['reversed_keywords'] if orientation == 'Перевёрнута' else card['upright_keywords'] ) line = f"{pos}: {card['name']} ({orientation}) — {keywords}" table.append(line) console.print(Text(line, style='bold cyan')) self._save(table) def _save(self, lines): with open('history.txt', 'a', encoding='utf-8') as f: f.write(f" [{self.timestamp}] Расклад: {self.spread} ") f.write(' '.join(lines) + ' ') def main: console.print("🌙 Добро пожаловать в цифровой оракул Таро!", style='bold magenta') console.print("1 ⎯ Карта дня 2 ‒ Кельтский крест") choice = input("Выберите расклад (1/2) > ").strip spread = 'daily' if choice == '1' else 'cc' reading = Reading(spread) reading.show if __name__ == '__main__': main

Как запустить

  1. Склонируйте или скачайте файлы в папку tarot_bot.
  2. Перейдите в папку терминалом:
    cd tarot_bot
  3. Установите зависимость:
    pip install rich
  4. Запустите:
    python tarot.py

Расширения и идеи

  • Telegram-бот. Используйте библиотеку python-telegram-bot и запустите расклады в мессенджере.
  • Визуализация. Добавьте PNG-изображения карт и отображайте их через matplotlib или tkinter.
  • Голосовой интерфейс. Синтез речи через pyttsx3 или онлайн TTS-сервисы.
  • Аналитика. Сохраняйте расклады в SQLite и стройте графики «какие карты выпадают чаще всего».

Всего меньше ста строк кода — и у вас работающий персональный таролог!
Программа легко подстраивается под любые колоды (Райдера-Уэйта, Таро Тота, Манара) и расклады (три карты, «звезда», «отношения»).
Экспериментируйте, добавляйте свои трактовки и делитесь результатами с друзьями.
Удачных вам открытий в мире Таро и Python!