Это потому, что вы использовали неверную логику.
Прямо сейчас, то, что происходит,
low = guess
guess = (guess - low) // 2 + low
Поскольку low = guess
приведенное выше утверждение эквивалентно,
guess = (guess - guess) // 2 + low
# guess = 0 + low
# guess = low
Аналогично, для высокого значения
high = guess
guess = (high - guess) //2 + guess
Поскольку high = guess
вышеупомянутое утверждение эквивалентно,
guess = (high - high) // 2 + guess
# guess = 0 + guess
# guess = guess
Именно поэтому оно всегда застревает на 50
.
Фактическая логика для его работы следующая:
elif use == 'higher':
low = guess
guess = (guess + high) // 2
elif use == 'lower':
high = guess
guess = (guess + low) // 2
Измените фрагмент на этот.Это будет работать!
Надеюсь, это поможет!:)