Собираем цикл, условия и input() в первую настоящую программу.
Зачем этот проект
До сих пор вы решали упражнения по одной теме за раз: тут циклКонструкция, повторяющая блок кода: for перебирает элементы, while — пока условие истинно., там условие. Настоящее программирование начинается, когда приёмы соединяются в работающую программу. Сегодня вы напишете первую такую программу — игру «Угадай число». Она маленькая, но в ней есть всё, из чего состоят большие приложения: состояние, цикл обработки ввода, ветвление и условие выхода.
Правила игры
Программа загадывает целое число от 1 до 100. Игрок вводит догадки, а программа отвечает: «больше», «меньше» или «угадал!» — и считает попытки.
Шаг 1. Загадываем число
Случайное число даёт модуль random (подробно о нём — в модуле про библиотеки, сейчас достаточно одной функцииИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат.):
▶ step1.py
Шаг 2. Одна догадка
Считываем ввод игрока и сравниваем с загаданным. Помните: input() возвращает строкуТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str)., для сравнения с числом нужен int():
▶ step2.py
💡Совет
В песочнице ввод для input() задаётся в поле «Ввод (stdin)» под редактором — каждая строка по порядку. Введите туда, например, 50 и запустите.
Шаг 3. Цикл до победы
Одна догадка — не игра. Оборачиваем проверку в while True и выходим по break, когда игрок угадал. Заодно считаем попытки:
▶ step3.py
📝Заметка
Попробуйте в поле stdin ввести несколько строк: 50, 30, 42 — по строке на догадку. Программа «сыграет» всю партию за один запуск.
Шаг 4. Собираем в функцию
Хорошая привычка: игровую логику оформлять функцией, которой можно передать параметры (загаданное число), а результат — возвращать. Так код можно тестировать: вызвал с известным числом — проверил ответ. Соберите игру сами:
Заданиерешение.py
Напишите функцию play(secret, guesses): secret — загаданное число, guesses — список догадок игрока. Функция проходит по догадкам и для каждой печатает "больше" (если secret больше догадки), "меньше" (если secret меньше) или "угадал". Дойдя до правильной догадки, верните номер попытки (счёт с 1). Если игрок так и не угадал — верните -1.
Шаг 5. Финальная версия
Всё вместе — с настоящим случайным числом и защитой от нечисловых вводов (просто пропускаем их через проверку .isdigit()):
▶ game.py
💡Совет
Не знаете, что вводить в stdin, если число случайное? Подсказка: стратегия «дели пополам» — начните с 50 и сужайте диапазон. Это бинарный поиск, вы встретите его в модуле про алгоритмыЧёткая последовательность шагов для решения задачи за конечное число действий.: любое число от 1 до 100 угадывается максимум за 7 попыток.
❓Проверь себя
Зачем в игре цикл while True с break, а не for?
Почему перед сравнением ввод преобразуют через int()?
Что запомнить
Программа = состояние (secret, attempts) + цикл обработки ввода + ветвление + условие выхода.
while True + break — стандартный каркас игрового цикла.
Логику оформляйте функцией с параметрами — её можно проверять на известных данных.
Стратегия «дели пополам» — это бинарный поиск, он ждёт вас в модуле про алгоритмы.
Комментарии
Загрузка…
Загрузка комментариев…