@TheZezus
Учусь кодить на Python

Как упростить код на Python?

Цель кода состоит в том,что компьютер угадывает число,которое мы загадали.Максимум за 7 попыток он его угадает,но как можно сделать так,чтобы компьютер угадывал загаданное нами число за меньшее количество попыток?
num1 = 0
num2 = 100
count = 0
while True:
  N = (num1 + num2) // 2
  print("Твоё число больше,меньше или равно ", N, "?")
  answer = int(input("1 - больше, 2 - меньше, 3 - равно:"))
  count += 1
  if answer == 3:
    print("Я угадал с", count, "попытки!")
    break
  elif answer == 1:
    num1 = N
  elif answer == 2:
    num2 = N
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
hint000
@hint000
у админа три руки
Добавим малюсенькую капельку математики. Эту строку
N = (num1 + num2) // 2
заменить на:
coin = random.randint(1, 2)
if coin == 1:
    N=N1+(2**(ceil(log2(N2-N1))-1)-1)
if coin == 2:
    N=N2-(2**(ceil(log2(N2-N1))-1)-1)

В самом неудачном случае количество попыток не увеличится, а в среднем будет угадывать за меньшее количесво попыток.
spoiler
Код подбрасывания монетки цельнотянут с SO.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
Вообще должно угадывать за 6 попыток. Просто при неудачной попытке надо исключать из диапазона само число, которое ты проверил

если у тебя всего 3 возможных значения, то угадывается за одну попытку, 7 значений - за 2, 15 за 3, 31 за 4, 63 за 5, 127 за 6, обобщить можешь сам
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы