Задача по Бинарному поиску

Практические задачи по алгоритмам:
Бинарный поиск (модификация): Напишите программу, которая загадывает число от 1 до 100, а вы должны написать алгоритм (через while), который угадает его за минимальное количество попыток (используя логику бинарного поиска).

Поиск максимума: Дан список чисел. Не используя встроенную функцию max(), найдите самое большое число в списке с помощью цикла for.

# Пример бинарного поиска, надо улучшить или что то изменить в коде
def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        guess = arr[mid]
        
        if guess == target:
            return mid  # Нашли! Возвращаем индекс
        if guess > target:
            high = mid - 1
        else:
            low = mid + 1
    return None  # Не нашли

numbers = [1, 3, 5, 7, 9, 11, 13]
print(binary_search(numbers, 7))  # Выведет 3 (индекс числа 7)