Почему бы не использовать модуль bisect? Он должен выполнить нужную вам работу - меньше кода для вас, чтобы поддерживать и тестировать.