Задать вопрос
@N_kuzya
Junior Coder

Не могу решить задачу на Python?

Читаю книгу "Программируем на Python" Майкла Доусона и наткнулся на задачу.

Суть Задачи в том, чтобы пользователь загадывал число, а программа отгадывала, при этом задавая вопрос "Больше или Меньше?".

Вот текст этой задачи:
"А вот задача посложнее. Напишите на псевдокоде алгоритм игры, в которой случайное число от 1 до 100 загадывает человек, а отгадывает компьютер. Прежде чем приступать к решению, задумайтесь над тем, какой должна быть оптимальная стратегия отгадывания. Если алгоритм на псевдокоде будет удачным, попробуйте реализовать игру на Python"

Вот мой код, который я написал :
import random
print( "\tДобро пожаловать в игру 'Отгадай число'!")
print("\nЗагадывайте число от 1 до 100")
print("Я постараюсь отгадать его за минимальное число попыток.")
print("Используйте  \"Больше\", \"Меньше\", \"Да\" или \"Нет\"\n")
max_number = 100
yesOrNot = input("Ваше число 50?\n ")
guess = 50
if yesOrNot == "Да" :
    print("Я нашел это число!!!")
    input("Нажмите Enter чтобы выйти...")
elif yesOrNot == "Нет" :
    while yesOrNot == "Да" :
        check = input("Больше или Меньше")
        if check == "Больше" :
            guess_r = random.randint(guess, max_number)
        elif check == "Меньше" :
            guess_r = random.randit(0, guess)
        guess_r = max_number
        guess_r = guess
        yesOrNot = input("Ваше число ", str(guess_r), "?")     
print("Я нашел это число")
input("Нажмите Enter чтобы выйти...")


Но программа просто спрашивает "Ваше число 50?", затем просто выводит две последние строки при этом на смотря на условия.

В чем проблема?
  • Вопрос задан
  • 37197 просмотров
Подписаться 1 Оценить 6 комментариев
Ответ пользователя Sovik32 К ответам на вопрос (8)
@Sovik32
Тут есть и проверка на мухлевку и правильное сужение диапазона! Мой код будет отгадывать быстрее.
import random

print("загадайте число от 0 до 100")
print(
    "Если мое число меньше или больше вашего вводите '<' или '>' соответственно, а если я угадал, то введите 'y' и нажмите Enter"
)
rnd = 50
min_diapazona = 0
max_diapazona = 100
otvet = ""
while 1 > 0:
    print("Мое число:", rnd, "я угадал? Диапазон от", min_diapazona, "до",
          max_diapazona)
    otvet = input()
    if otvet == "y":
        print("Я угадал! Игра окончена.")
        break
    elif otvet == "<":
        max_diapazona = rnd - 1
        try:
            rnd = random.randint(min_diapazona, max_diapazona)
        except:
            print("Вы мухлевщик! Я с вами больше не играю! Игра окончена!")
    elif otvet == ">":
        min_diapazona = rnd + 1
        try:
            rnd = random.randint(min_diapazona, max_diapazona)
        except:
            print("Вы мухлевщик! Я с вами больше не играю! Игра окончена!")
            break
    else:
        print("Неправельнй ввод! Допустимые символы: '<', '>' и 'y'")
Ответ написан
Комментировать