Глава 23 · Ещё больше мини-проектов

Проект 23-2: Генератор случайных историй

random.choice() пять раз подряд — и шаблон превращается в маленькую историю.

Проект 23-2: Генератор случайных историй

Заполняем шаблон предложения случайно выбранными словами из нескольких списков — иногда получаются смешные истории («безумные библиотеки», mad libs). Вся идея — в random.choice() (глава 5) и методе строк .format() (глава 8):

story_generator.py
PRILAGATELNYE = ["храбрый", "любопытный", "рассеянный", "весёлый", "загадочный"]
SUSHESTVITELNYE = ["дракон", "программист", "кот", "путешественник", "робот"]
MESTA = ["в тёмном лесу", "на далёкой планете", "в старой библиотеке"]
GLAGOLY = ["нашёл", "потерял", "починил", "изобрёл", "испугался"]
PREDMETY = ["волшебный ноутбук", "древний свиток", "сломанный компас"]

SHABLON = (
    "Однажды {prilagatelnoe} {sushestvitelnoe} {mesto} {glagol} {predmet}. "
    "С тех пор жизнь его больше не была прежней."
)

def sluchajnaya_istoriya():
    return SHABLON.format(
        prilagatelnoe=random.choice(PRILAGATELNYE),
        sushestvitelnoe=random.choice(SUSHESTVITELNYE),
        mesto=random.choice(MESTA),
        glagol=random.choice(GLAGOLY),
        predmet=random.choice(PREDMETY),
    )
Пять независимых случайных выборов — 5×5×5×5×5 = 3125 историй
Даже с пятью короткими списками по 5 слов получается больше трёх тысяч различных комбинаций — вот почему такой простой приём кажется таким разнообразным.

Полный код: 📄 projects/console/story-generator/story_generator.py

★★ Самостоятельная задача
Ещё один список

Добавьте список НАРЕЧИЯ (например, "внезапно", "случайно", "незаметно") и вставьте {narechie} в шаблон.

Практика в Jupyter Notebook
23-02-generator-istorij.ipynb · случайные истории и random.seed()
Открыть ноутбук →