Найти в Дзене
Практика Python

Программируем логическую игру «Угадай цифру»

Суть этой задачи такова: Компьютер загадывает цифру, а пользователь должен её угадать с трех попыток. После каждой попытки компьютер дает пользователю подсказку. Например, если компьютер загадал 7, а пользователь ввел 3, то компьютер должен дать подсказку – « Моя цифра больше твоей! », а если пользователь ввел 9, то компьютер должен дать подсказку – «Моя цифра меньше твоей!».

Программируем логическую задачу «Угадай цифру»
Программируем логическую задачу «Угадай цифру»

Для получения случайного числа мы будем использовать функцию randrange (start, end) из модуля random, который предназначен для работы со случайными числами. Randrange() возвращает случайное число из диапазона, начинающегося со значения start и заканчивающегося значением end-1.

В примере, приведенном ниже, мы выводим на экран случайное число из диапазона от 0 до 9:

Выводим на экран случайное число из диапазона 0-9 - код
Выводим на экран случайное число из диапазона 0-9 - код

в нашем примере выводит 6.

Выводим на экран случайное число из диапазона 0-9 - вывод
Выводим на экран случайное число из диапазона 0-9 - вывод

Итак, задаем случайное число и сохраняем его в переменной comp_digit:

Сохраняем, загаданное компьютером число
Сохраняем, загаданное компьютером число

Теперь нам нужно запросить цифру у пользователя. Для этого используем функцию input (). Введенное пользователем значение сохраняем в переменной user_digit:

Сохраняем пользовательское число
Сохраняем пользовательское число

Мы получим от пользователя строковую переменную и далее можем столкнуться со следующими проблемами:

- Пользователь ввел не число;

-Пользователь ввел число большее 9 или меньшее 0.

Первое мы можем обработать либо с помощью метода строк .isdigit(), либо с помощью конструкции try except else. Далее нам нужно проверить в правильном ли диапазоне пользователь ввел число.

При использовании .isdigit() получаем:

Вылавливаем пользовательские ошибки с помощью  .isdigit()
Вылавливаем пользовательские ошибки с помощью .isdigit()

При использовании конструкции try except else:

Вылавливаем пользовательские ошибки с помощью  try exept else
Вылавливаем пользовательские ошибки с помощью try exept else

В нашей программе мы будем использовать конструкцию try except else. Пока, если пользователь делает все верно, мы ничего не делаем и ничего ему не сообщаем. Исправим это. Введем блок, который сравнивает число введенное пользователем и число загаданное компьютером и в зависимости от результата выводит соответствующее сообщение:

Теперь наш код умеет сравнивать user_digit и comp_digit
Теперь наш код умеет сравнивать user_digit и comp_digit

Теперь все работает, но в одноразовом режиме. Вводим в начале программы счетчик текущей попытки user_count, начальное значение которому зададим 1.

Получение от пользователя значения user_digit перенесем в блок try.

Конструкцию try except else поместим в бесконечный цикл - while True и в блоке, в котором предусматривается равенство user_digit и comp_digit зададим выход из бесконечного цикла с помощью break.

Также нам остается ввести блок, который должен следить за состоянием счетчика user_count. Если его значение больше 3, выполнение программы должно закончиться, а пользователь получает сообщение – «Ты проиграл!»

В конце всех этих преобразований код программы выглядит вот так:

Код логической игры "Угадай цифру"
Код логической игры "Угадай цифру"

Конструктивная критика приветствуется.

Эта статья была полезной? Поставьте лайк и поделитесь с друзьями в социальных сетях!

Оставьте отзывы и замечания!

Более полное описание подходов, методов и функций, применяемых в этом решении:

Основы работы со строками

Методы строк. Часть 1

Основы работы со списками

Методы списков. Часть 1

Основы работы с числами

Числовые функции.Часть 1

База знаний:

Методы: .randrange()

Модули: random