Суть этой задачи такова: Компьютер загадывает цифру, а пользователь должен её угадать с трех попыток. После каждой попытки компьютер дает пользователю подсказку. Например, если компьютер загадал 7, а пользователь ввел 3, то компьютер должен дать подсказку – « Моя цифра больше твоей! », а если пользователь ввел 9, то компьютер должен дать подсказку – «Моя цифра меньше твоей!».
Для получения случайного числа мы будем использовать функцию randrange (start, end) из модуля random, который предназначен для работы со случайными числами. Randrange() возвращает случайное число из диапазона, начинающегося со значения start и заканчивающегося значением end-1.
В примере, приведенном ниже, мы выводим на экран случайное число из диапазона от 0 до 9:
в нашем примере выводит 6.
Итак, задаем случайное число и сохраняем его в переменной comp_digit:
Теперь нам нужно запросить цифру у пользователя. Для этого используем функцию input (). Введенное пользователем значение сохраняем в переменной user_digit:
Мы получим от пользователя строковую переменную и далее можем столкнуться со следующими проблемами:
- Пользователь ввел не число;
-Пользователь ввел число большее 9 или меньшее 0.
Первое мы можем обработать либо с помощью метода строк .isdigit(), либо с помощью конструкции try except else. Далее нам нужно проверить в правильном ли диапазоне пользователь ввел число.
При использовании .isdigit() получаем:
При использовании конструкции try except else:
В нашей программе мы будем использовать конструкцию try except else. Пока, если пользователь делает все верно, мы ничего не делаем и ничего ему не сообщаем. Исправим это. Введем блок, который сравнивает число введенное пользователем и число загаданное компьютером и в зависимости от результата выводит соответствующее сообщение:
Теперь все работает, но в одноразовом режиме. Вводим в начале программы счетчик текущей попытки user_count, начальное значение которому зададим 1.
Получение от пользователя значения user_digit перенесем в блок try.
Конструкцию try except else поместим в бесконечный цикл - while True и в блоке, в котором предусматривается равенство user_digit и comp_digit зададим выход из бесконечного цикла с помощью break.
Также нам остается ввести блок, который должен следить за состоянием счетчика user_count. Если его значение больше 3, выполнение программы должно закончиться, а пользователь получает сообщение – «Ты проиграл!»
В конце всех этих преобразований код программы выглядит вот так:
Конструктивная критика приветствуется.
Эта статья была полезной? Поставьте лайк и поделитесь с друзьями в социальных сетях!
Оставьте отзывы и замечания!
Более полное описание подходов, методов и функций, применяемых в этом решении:
База знаний:
Методы: .randrange()
Модули: random