Глава 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()