Ваша задача называется бинарный поиск
def binsearch(min, max, check):
support = (min + max) // 2
result = check(support)
if result == 'меньше':
return binsearch(support+1, max, check)
if result == 'больше':
return binsearch(min, support-1, check)
return support
def guess(num):
print('загадано', num)
def check(req):
result = 'равно' if req == num else 'меньше' if req < num else 'больше'
print(f'это {req}?', '-', 'Да' if result=='равно' else f'Нет, твоё число {result}')
return result
return check
binsearch(0, 100, guess(10))
print('='*30)
binsearch(0, 100, guess(27))
print('='*30)
binsearch(0, 100, guess(50))
print('='*30)
binsearch(0, 100, guess(100))
загадано 10
это 50? - Нет, твоё число больше
это 24? - Нет, твоё число больше
это 11? - Нет, твоё число больше
это 5? - Нет, твоё число меньше
это 8? - Нет, твоё число меньше
это 9? - Нет, твоё число меньше
это 10? - Да
==============================
загадано 27
это 50? - Нет, твоё число больше
это 24? - Нет, твоё число меньше
это 37? - Нет, твоё число больше
это 30? - Нет, твоё число больше
это 27? - Да
==============================
загадано 50
это 50? - Да
==============================
загадано 100
это 50? - Нет, твоё число меньше
это 75? - Нет, твоё число меньше
это 88? - Нет, твоё число меньше
это 94? - Нет, твоё число меньше
это 97? - Нет, твоё число меньше
это 99? - Нет, твоё число меньше
это 100? - Да