Добавить в корзинуПозвонить
Найти в Дзене
Bednyakov

Python с нуля. Создаём отгадывателя чисел.

Продолжаем закреплять азы с помощью задачек. На этот раз задача следующая: Нужно написать алгоритм игры, в которой число от 1 до 100 загадывает человек, а отгадывает компьютер. Скажу сразу, стратегия отгадывания у меня вышла не самой интеллектуальной, поэтому буду очень рад вашим дополнениям. Но работает программа честно, без "подглядываний", и в пределах определенного количества попыток. И даже ругает игрока, если он не понял правил. Пример работы программы: А теперь поехали! Открывает программное окружение (о том, как это сделать, написано тут) и пишем комментарии: # Отгадыватель
#
# Игрок выбирает случайное число в диапазоне от 1 до 100
# Компьютер пытается отгадать это число с 20 попыток
# В случае нарушения правил игроком, компьютер ругается Импортируем модуль рандома для создания случайных чисел. Он и является ядром интеллекта, если можно так выразиться, который либо приблизит компьютер к победе, либо не даст никаких шансов. import random Приветствуем игрока и объясняем правила:

Продолжаем закреплять азы с помощью задачек. На этот раз задача следующая:

Нужно написать алгоритм игры, в которой число от 1 до 100 загадывает человек, а отгадывает компьютер.

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

А теперь поехали! Открывает программное окружение (о том, как это сделать, написано тут) и пишем комментарии:

# Отгадыватель
#
# Игрок выбирает случайное число в диапазоне от 1 до 100
# Компьютер пытается отгадать это число с 20 попыток
# В случае нарушения правил игроком, компьютер ругается

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

import random

Приветствуем игрока и объясняем правила:

print('\tДобро пожаловать в игру "Отгадыватель"!')
print('\nЗагадайте число из диапазона от 1 до 100.')
print('А я постараюсь его отгадать.\n')

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

n1 = int(input('Загадайте число: '))
n2 = random.randint(1, 100)
tries = 1
  • n1 - это переменная, которая получит значение, введенное игроком.
  • n2 - переменная, которая с помощью модуля рандома получит случайное значение из диапазона от 1 до 100.
  • tries - это переменная, которой изначально присвоено значение 1. Она будет выполнять роль счетчика.

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

while n1 > 100:
n1 = int(input('\n\nЧитай правила, тормоз. И введи число от 1 до 100.'))

А теперь переходим к циклу отгадывания. Принцип у него такой:

Пока n1 неравно n2, сравнивать эти переменные, и если рандомная n2 больше числа, загаданного игроком (n1)- вычитать из него по единичке. Если n2 меньше загаданного числа - прибавлять по единичке. Это такой аналог принципу "горячо-холодно". Каждый раз при выполнении указанных действий счетчик tries тоже будет прибавлять к себе по единичке, и если tries станет больше 20, цикл вырубится, а на экран будет выведено сообщение, что компьютер проиграл. Пишем:

while n2 != n1:
if n2 > n1:
n2 -= 1
print('Еще попытка...')
else:
n2 += 1
print('Еще попытка...')
tries += 1
if tries > 20:
input('\n\nИзвините, я исчерпал 20 попыток. Вы простите меня?')
break

Но не забываем про отступы в циклах, Дзен их игнорирует, поэтому если забыли, внизу статьи будет картинка с готовым кодом.

Теперь пишем условие, что если n1 и n2 становятся равными, игроку будет выведено сообщение с отгаданным числом и количеством попыток, которые потратил компьютер на отгадывание. Иначе программа выведет прощальное сообщение.

if n2 == n1:
print('Это число ', n2)
print('Я потратил всего ', tries, ' попыток!\n')
input('\nНажмите Enter, чтобы выйти.')
else:
input('\n\nСпасибо за игру. Нажмите Enter, чтобы выйти.')

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

На этом у меня всё. Буду благодарен за все дополнения и усовершенствования.