Вопрос задан 30.10.2026 в 08:39. Предмет Информатика. Спрашивает Савостьяненко Валерия.

Язык программирования Python.
Игра «Компьютер угадывает число»
Поменяйте мальчика и компьютер из прошлой задачи местами. Теперь мальчик загадывает число от 1 до 100 (включительно). Компьютер может спросить у мальчика: «Твоё число равно, меньше или больше, чем число N?», где N — число, которое хочет проверить компьютер. Мальчик отвечает одним из трёх чисел: 1 — равно, 2 — больше, 3 — меньше.
Напишите программу, которая с помощью цепочки таких вопросов и ответов мальчика угадывает число.
Дополнительно: сделайте так, чтобы можно было гарантированно угадать число за семь попыток.

Перейти к ответам

Ответы на вопрос

Отвечает Лазарук Дарья.

Для решения этой задачи на Python лучше всего использовать метод бинарного поиска. Он позволяет компьютеру угадать число от 1 до 100 максимум за 7 попыток.

Код программы

Python
print("Загадай число от 1 до 100.")
print("Я попробую его угадать!")

left = 1
right = 100
attempts = 0

while left <= right:
n = (left + right) // 2
attempts += 1

print("Твоё число равно, больше или меньше", n, "?")
print("1 — равно")
print("2 — больше")
print("3 — меньше")

answer = int(input("Твой ответ: "))

if answer == 1:
print("Я угадал число:", n)
print("Количество попыток:", attempts)
break

elif answer == 2:
left = n + 1

elif answer == 3:
right = n - 1

else:
print("Ошибка! Введи 1, 2 или 3.")
attempts -= 1

else:
print("В ответах есть противоречие!")

Как работает программа?

  1. Сначала компьютер устанавливает границы поиска: left = 1 и right = 100.

  2. Выбирает число посередине диапазона с помощью формулы (left + right) // 2.

  3. Спрашивает у мальчика, равно ли загаданное число предложенному, больше или меньше.

  4. Если мальчик отвечает 1, компьютер угадал число и завершает программу.

  5. Если ответ 2, загаданное число больше предложенного, поэтому нижняя граница увеличивается.

  6. Если ответ 3, загаданное число меньше предложенного, поэтому верхняя граница уменьшается.

  7. Компьютер повторяет действия, пока не угадает число.

Пример работы программы

Допустим, мальчик загадал число 73.

Обычный текст
Загадай число от 1 до 100. Я попробую его угадать! Твоё число равно, больше или меньше 50? Твой ответ: 2 Твоё число равно, больше или меньше 75? Твой ответ: 3 Твоё число равно, больше или меньше 62? Твой ответ: 2 Твоё число равно, больше или меньше 68? Твой ответ: 2 Твоё число равно, больше или меньше 71? Твой ответ: 2 Твоё число равно, больше или меньше 73? Твой ответ: 1 Я угадал число: 73 Количество попыток: 6

Почему компьютер гарантированно угадает число за 7 попыток?

При бинарном поиске после каждого неправильного предположения количество возможных чисел уменьшается примерно вдвое.

Например:

  • После 1-й попытки остаётся не более 50 чисел.

  • После 2-й — не более 25.

  • После 3-й — не более 12.

  • После 4-й — не более 6.

  • После 5-й — не более 3.

  • После 6-й — не более 1.

  • На 7-й попытке компьютер обязательно угадает оставшееся число.

Это также можно подтвердить формулой:

⌈log⁡2100⌉=7\lceil \log_2 100 \rceil = 7

Итог: программа использует бинарный поиск, благодаря которому компьютер гарантированно угадает любое число от 1 до 100 не более чем за 7 попыток, если мальчик отвечает правильно.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос