Глава 10 · Немного автоматизации!

Мини-проект — игра «Угадай число», версия 2

Та же игра, что и в главе 9, — но теперь с неограниченным числом попыток, спроектированная от псевдокода и схемы до готового кода.

Помните игру «Угадай число» из главы 9? У неё была одна проблема — всего одна попытка. Теперь, вооружившись while и break, дадим игроку сколько угодно попыток. Спроектируем её как настоящий алгоритм — сначала словами, потом схемой, потом кодом.

Шаг 1 — псевдокод

psevdokod.txt
загадать случайное число от 1 до 20
счётчик попыток = 0
повторять пока не угадано:
    получить попытку игрока
    увеличить счётчик попыток
    если попытка равна загаданному — сообщить победу и остановиться
    иначе если попытка меньше — подсказать «больше»
    иначе — подсказать «меньше»

Шаг 2 — flowchart

СТАРТзагадать число 1..20,popytki = 0получить попыткуигрокаpopytki += 1попытка ==загаданное?ДАсообщить победуНЕТпопытка <загаданное?ДАподсказать «больше»НЕТподсказать «меньше»КОНЕЦ
Угадай число v2 — алгоритм целиком, до единой строчки Python

Шаг 3 — таблица трассировки (пример игры)

Попытка №Ввод игрокаЗагаданоРезультат
11014меньше
21714больше
31414угадал!

Шаг 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, без установки
Открыть практику →