Гид по технологиям

Mad Libs на Python — игра Vacation Fun

• 4 min read • Python • Обновлено 24 Nov 2025
Mad Libs на Python — Vacation Fun
Mad Libs на Python — Vacation Fun

Человек записывает историю в дневник

Что такое Mad Libs

Mad Libs — простая словесная игра, изобретённая Леонардом Стерном и Роджером Прайсом. Один игрок читает историю с пустыми местами, а другие дают слова (существительные, прилагательные, глаголы и т.д.) без знания контекста. Получающийся текст обычно выходит смешным и нелепым.

Классические наборы Mad Libs включают более 180 шаблонов. Игра появилась в поп‑культуре (например, ссылки в сериалах и шоу), доступна в виде книг, карточных игр и мобильных приложений.

Важно: Mad Libs — отличный проект для новичка в программировании: он комбинирует ввод пользователя, работу со строками и базовую логику вывода.

Мини‑определения

  • Шаблон — текст с пропусками, которые нужно заполнить словами.
  • Заполнитель (placeholder) — место в шаблоне, куда подставляется введённое слово.

Как создать игру Vacation Fun на Python — пошагово

Ниже — упрощённый план и готовый код. Код можно копировать в любой файл .py и запускать.

  1. Откройте шаблон Mad Libs (например, из раздела Printables на официальном сайте Mad Libs) и разметьте пропуски.
  2. Объявите переменные для каждого пропуска и запросите ввод через input().
adjective = input("Введите прилагательное: ")
adjective2 = input("Введите ещё одно прилагательное: ")
noun = input("Введите существительное: ")
noun2 = input("Введите ещё одно существительное: ")
plural_noun = input("Введите существительное во множественном числе: ")
game = input("Введите название игры: ")
plural_noun2 = input("Введите существительное во множественном числе: ")
ing_verb = input("Введите глагол с окончанием -ing (напр. swimming): ")
ing_verb2 = input("Введите другой глагол с окончанием -ing: ")
plural_noun3 = input("Введите существительное во множественном числе: ")
ing_verb3 = input("Введите глагол с окончанием -ing: ")
noun3 = input("Введите существительное: ")
plant = input("Введите название растения: ")
body_part = input("Введите часть тела: ")
place = input("Введите название места: ")
ing_verb4 = input("Введите глагол с окончанием -ing: ")
adjective3 = input("Введите прилагательное: ")
number = input("Введите число: ")
plural_noun4 = input("Введите существительное во множественном числе: ")
  1. Соберите историю, подставив переменные в шаблон. В этом примере использована конкатенация строк (оператор +), как в оригинальном учебном материале.
story = ("A vacation is when you take a trip to some " + adjective + " place with your " +
adjective2 + " family. Usually you go to some place that is near a/an " + noun + " or up on a/an " +
noun2 + ". A good vacation place is one where you can ride " + plural_noun + " or play " + game +
" or go hunting for " + plural_noun2 + ". I like to spend my time " + ing_verb + " or " + ing_verb2 +
". When parents go on a vacation, they spend their time eating three " + plural_noun3 +
" a day, and fathers play golf, and mothers sit around " + ing_verb3 +
". Last summer, my little brother fell in a/an " + noun3 + " and got poison " + plant +
" all over his " + body_part + ". My family is going to go to the " + place + ", and I will practice " + ing_verb4 +
". Parents need vacations more than kids because parents are always very " + adjective3 + " and because they have to work " + number +
" hours every day all year making enough " + plural_noun4 + " to pay for the vacation.")
  1. Выведите готовую историю:
print(story)

Пример вывода

Результат работы Mad Libs Vacation Fun в Python

Варианты улучшений и альтернативные подходы

Важно: базовый вариант хорошо работает для обучения, но у него есть ограничения. Ниже — идеи и альтернативы.

1) Использовать f‑строки или .format вместо конкатенации

f‑строки делают код читаемее и меньше подвержены ошибкам со пробелами:

story = (
    f"A vacation is when you take a trip to some {adjective} place with your {adjective2} family. "
    f"Usually you go to some place that is near a/an {noun} or up on a/an {noun2}. ..."
)

2) Рандомизация шаблонов

Если у вас несколько шаблонов, выбирайте один случайно с помощью модуля random, чтобы игра не приедалась.

3) GUI с Tkinter

Tkinter даёт простую форму ввода и кнопку «Сгенерировать историю». Подходит для демонстрации в классе.

4) Озвучивание с pyttsx3

Модуль pyttsx3 позволяет проговаривать историю голосом офлайн; полезно для детей и интерактивных занятий.

5) Валидация ввода и подсказки

Проверяйте пустые строки и типы (например, число для hours) и давайте подсказки пользователю.

Короткая методология разработки (мини‑процесс)

  1. Спланируйте шаблон — отметьте все пропуски и их типы.
  2. Сделайте MVP: рабочий скрипт с вводом и выводом.
  3. Тестируйте с разными вводами (короткие/длинные, спецсимволы).
  4. Улучшайте: f‑строки, GUI, озвучивание, сохранение результатов.
  5. Покажите пользователям и соберите обратную связь.

Когда такой подход не подойдёт

  • Если нужна безопасная обработка пользовательского ввода (например, публичный веб‑сервис), нельзя слепо конкатенировать и выводить HTML — требуется экранирование.
  • Для многоязычного приложения придётся добавить локализацию шаблонов и правил грамматики.
  • Если ожидается большой трафик пользователей, консольный вариант неудобен — нужна серверная архитектура.

Шпаргалка: полезные сниппеты

  • Проверка пустого ввода:
value = input("Введите слово: ").strip()
if not value:
    value = "(ничего не введено)"
  • Выбор случайного шаблона:
import random
template = random.choice(templates)
story = template.format(**answers)
  • Быстрое текстовое озвучивание (pyttsx3):
import pyttsx3
engine = pyttsx3.init()
engine.say(story)
engine.runAndWait()

Роль‑ориентированные чек‑листы

Для преподавателя:

  • Подготовьте набор шаблонов разного уровня.
  • Дайте инструкции по частям речи.
  • Подготовьте демонстрацию GUI.

Для ученика (новичка):

  • Поймите input() и print().
  • Попробуйте заменить конкатенацию на f‑строки.
  • Добавьте валидацию ввода.

Для разработчика, который хочет продвинуть проект:

  • Добавьте модульность (файлы шаблонов).
  • Переход на веб (Flask/FastAPI) при необходимости.
  • Подумайте о международной поддержке и экранировании вывода.

Критерии приёмки

  • Скрипт запускается и просит ввод для всех заполнителей.
  • Итоговая история корректно выводится и читаема.
  • Нет необработанных ошибок при пустом вводе.
  • При добавлении GUI кнопка «Сгенерировать» формирует тот же текст.

Глоссарий (одно‑стро́чки)

  • input(): встроенная функция Python для чтения строки от пользователя.
  • f‑строка: литерал строки с подстановкой выражений (Python 3.6+).
  • pyttsx3: офлайн‑библиотека для синтеза речи.

Резюме

Mad Libs — простой и наглядный проект для изучения Python. Начав с консольного варианта, вы легко расширите игру: добавите графический интерфейс, озвучивание и случайную генерацию шаблонов. Для преподавателей это удобный инструмент для практики частей речи и работы со строками.

Важно: проверяйте ввод и тестируйте шаблоны на разных языках и вариантах слов, если планируете расширять проект.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро