Глава 10 · Немного автоматизации!
Мини-проект — игра «Угадай число», версия 2
Та же игра, что и в главе 9, — но теперь с неограниченным числом попыток, спроектированная от псевдокода и схемы до готового кода.
Помните игру «Угадай число» из главы 9? У неё была одна проблема — всего одна попытка.
Теперь, вооружившись while и break,
дадим игроку сколько угодно попыток. Спроектируем её как настоящий алгоритм — сначала
словами, потом схемой, потом кодом.
Шаг 1 — псевдокод
psevdokod.txt
загадать случайное число от 1 до 20
счётчик попыток = 0
повторять пока не угадано:
получить попытку игрока
увеличить счётчик попыток
если попытка равна загаданному — сообщить победу и остановиться
иначе если попытка меньше — подсказать «больше»
иначе — подсказать «меньше»
Шаг 2 — flowchart
Шаг 3 — таблица трассировки (пример игры)
| Попытка № | Ввод игрока | Загадано | Результат |
|---|---|---|---|
| 1 | 10 | 14 | меньше |
| 2 | 17 | 14 | больше |
| 3 | 14 | 14 | угадал! |
Шаг 4 — код
ugadaj_chislo_v2.py
import random
zagadannoe = random.randint(1, 20)
popytki = 0
while True:
popytka = int(input("Угадайте число от 1 до 20: "))
popytki += 1
if popytka == zagadannoe:
print(f"Поздравляем, вы угадали за {popytki} попыток(ки)!")
break
elif popytka < zagadannoe:
print("Загаданное число больше.")
else:
print("Загаданное число меньше.")
while True — намеренно бесконечный цикл
while True: сам по себе никогда не остановится — единственный выход: break внутри. Условие остановки («игрок угадал») естественнее проверить в середине тела, а не в начале — идеальный случай для этого приёма.Задача на закрепление: ограничение попыток и loop-else
★★ Самостоятельная задача
Ограничение попыток
Перепишите игру так, чтобы у игрока было не более 5 попыток — используйте цикл for по range(5) вместо while True, и блок else у цикла, чтобы сообщить правильный ответ, если игрок за 5 попыток не угадал.
Практика: «Угадай число» с неограниченными попытками
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Практика: «Угадай число» с ограничением попыток (loop-else)
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки