Угадай число пользователей между 0 и 100 (двоичный поиск)


Я в начале обучения Python и один из моих домашних заданий (в главе о петли) где писать код, что бы угадать количество пользователей от 1 до 100.

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

# Introduction
print('\nThink about a number between 0 - 100 and let me guess which is it.',
      '\n\nI will ask you whether my guess is lower or higher than your number',
      '\nIndicate "l" if lower than your number',
        '"h" if higher than your number and',
        '"e" if my guess is correct.'
      '\n\nYou ready?, let"s start!\n')

# Algorithm
count = 0
lborder = 0
hborder = 100
guess = 50

while True:
    answer = input('Is your number higher, lower or equal to ' + str(guess) + ':')
    if answer == 'l':
        hborder = guess
        guess = round((lborder + guess)/2)
    elif answer == 'h':
        lborder = guess
        guess = round((hborder + guess) / 2)
    elif answer == 'e':
        break
    else:
        print('Unrecognizable answer. Use: "l", "h", "e"')
    count += 1

print('\nHooray! It took me', count, 'to guess your number.', sep=' ')
input('\nPress Enter to Exit.')

Мой вопрос в принципе есть ли более эффективный алгоритм для нахождения этих чисел (быстрее). Также у вас есть какие-либо другие комментарии по поводу моего кода.



Комментарии
1 ответ

Ваш расчет count неправильный двумя способами:
1. Ты не считай своих последнюю догадку;
2. Считать недействительным пользовательского ввода.

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

4
ответ дан 2 февраля 2018 в 05:02 Источник Поделиться