Мне кажется сделал что-то интересное... Попробуй.
def get_n():
try:
number = int(input("Введите число от 0 до 100: "))
if 0 <= number <= 100:
return number
except ValueError:
pass
print("Вы ввели неправильное число!")
return get_n()
def bot(n=0, r=0, d=50):
print(f"Бот пробует число {n}, это его {r} попытка.")
if n == number:
print(f"Бот угадал число, число было {n}, и затратил на это {r} попыток.")
else:
if n < number:
bot(n + d, r + 1, d)
else:
bot(n - d, r + 1, int(d / 2) if int(d / 2) > 0 else 1)
number = get_n()
bot()
Единственное - иногда он повторяет значения.
UPD: Решить эту проблему можно заменив:
bot(n + d, r + 1, d)
на:
bot(n + d, r + 1, d - 1 if d - 1 > 0 else 1)