Задача «Угадай число» на Python: решение

Введение в задачу «Угадай число»

Задача «Угадай число» — это классическая игра, которая помогает новичкам освоить основы программирования. Она проста, но в то же время позволяет понять, как работает логика программирования, обработка пользовательского ввода и генерация случайных чисел. В этой статье мы рассмотрим, как реализовать эту игру на языке Python, шаг за шагом создавая функционал и добавляя интересные элементы.

Основная идея игры

Суть игры заключается в том, что компьютер загадывает случайное число в заданном диапазоне, а игрок должен его угадать. После каждой попытки компьютер сообщает, больше или меньше загаданное число, чем введённое игроком. Игра продолжается до тех пор, пока игрок не угадает число.

Подготовка к разработке

Перед тем как начать писать код, необходимо убедиться, что у вас установлен Python. Вы можете скачать последнюю версию с официального сайта python.org. После установки вы можете использовать любой текстовый редактор или IDE, например, PyCharm или VSCode.

Создание проекта

Создайте новый файл с расширением .py, например, guess_number.py. Это будет наш основной файл, в котором мы будем писать код.

Импорт необходимых библиотек

Для генерации случайного числа нам понадобится библиотека random. В самом начале нашего кода добавим следующий импорт:

import random

Генерация случайного числа

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

def generate_number():
    return random.randint(1, 100)

Эта функция будет возвращать случайное число, которое игрок должен будет угадать.

Основной игровой цикл

Теперь создадим основной игровой цикл, который будет запрашивать у игрока ввод и проверять его:

def play_game():
    number_to_guess = generate_number()
    attempts = 0
    guessed = False

    while not guessed:
        user_guess = int(input("Введите ваше число (от 1 до 100): "))
        attempts += 1

        if user_guess < number_to_guess:
            print("Загаданное число больше.")
        elif user_guess > number_to_guess:
            print("Загаданное число меньше.")
        else:
            guessed = True
            print(f"Поздравляем! Вы угадали число {number_to_guess} за {attempts} попыток.")

Запуск игры

Теперь нам нужно добавить возможность запускать игру. Для этого добавим следующий код в конец нашего файла:

if __name__ == "__main__":
    play_game()

Этот код позволяет запустить игру, когда вы запускаете файл напрямую.

Добавление функций для улучшения игры

Теперь, когда у нас есть базовая версия игры, давайте добавим несколько функций, чтобы сделать её более интересной:

  • Ограничение по попыткам: Позволим игроку угадывать число только определённое количество раз.
  • Уровни сложности: Позволим игроку выбирать уровень сложности, который будет определять диапазон загаданного числа.
  • Подсказки: Добавим возможность получать подсказки после определённого количества попыток.

Ограничение по попыткам

Для реализации ограничения по попыткам мы можем добавить переменную, которая будет хранить максимальное количество попыток:

def play_game(max_attempts=10):
    number_to_guess = generate_number()
    attempts = 0
    guessed = False

    while not guessed and attempts < max_attempts:
        user_guess = int(input("Введите ваше число (от 1 до 100): "))
        attempts += 1

        if user_guess < number_to_guess:
            print("Загаданное число больше.")
        elif user_guess > number_to_guess:
            print("Загаданное число меньше.")
        else:
            guessed = True
            print(f"Поздравляем! Вы угадали число {number_to_guess} за {attempts} попыток.")
    
    if not guessed:
        print(f"Вы исчерпали все попытки. Загаданное число было {number_to_guess}.")

Уровни сложности

Теперь добавим возможность выбора уровня сложности. Мы можем предложить игроку выбрать между лёгким, средним и сложным уровнями, которые будут определять диапазон загаданного числа:

def generate_number(difficulty):
    if difficulty == 'easy':
        return random.randint(1, 10)
    elif difficulty == 'medium':
        return random.randint(1, 50)
    else:
        return random.randint(1, 100)

def play_game():
    difficulty = input("Выберите уровень сложности (easy, medium, hard): ")
    number_to_guess = generate_number(difficulty)
    # Остальной код остается прежним...

Подсказки

Добавим возможность получать подсказки после определённого количества попыток. Например, если игрок не угадал число после 5 попыток, мы можем сказать ему, четное или нечётное загаданное число:

if attempts == 5:
    if number_to_guess % 2 == 0:
        print("Подсказка: Загаданное число четное.")
    else:
        print("Подсказка: Загаданное число нечётное.")

Полный код игры

Теперь, когда мы добавили все функции, давайте соберём полный код игры:

import random

def generate_number(difficulty):
    if difficulty == 'easy':
        return random.randint(1, 10)
    elif difficulty == 'medium':
        return random.randint(1, 50)
    else:
        return random.randint(1, 100)

def play_game(max_attempts=10):
    difficulty = input("Выберите уровень сложности (easy, medium, hard): ")
    number_to_guess = generate_number(difficulty)
    attempts = 0
    guessed = False

    while not guessed and attempts < max_attempts:
        user_guess = int(input("Введите ваше число: "))
        attempts += 1

        if user_guess < number_to_guess:
            print("Загаданное число больше.")
        elif user_guess > number_to_guess:
            print("Загаданное число меньше.")
        else:
            guessed = True
            print(f"Поздравляем! Вы угадали число {number_to_guess} за {attempts} попыток.")
        
        if attempts == 5:
            if number_to_guess % 2 == 0:
                print("Подсказка: Загаданное число четное.")
            else:
                print("Подсказка: Загаданное число нечётное.")

    if not guessed:
        print(f"Вы исчерпали все попытки. Загаданное число было {number_to_guess}.")

if __name__ == "__main__":
    play_game()

Заключение

Игра «Угадай число» — это отличный способ попрактиковаться в программировании на Python. Мы рассмотрели, как создать простую игру, добавили функции для улучшения игрового процесса и сделали её более интересной. Теперь вы можете экспериментировать с кодом, добавляя свои идеи и улучшения. Удачи в программировании!