Подскажите пожалуйста есть такое замечание по коду, строка
""функции внутри функций не стоит делать если в этом нет необходимости. Лучше вынести их на уровень модуля"" Как это правильно сделать?
Сам код:
Python:
def binary_search(arr: list, x: int, left: int, right: int) -> int:
Сам код:
Python:
def broken_search(nums: list, x: int) -> int:
left: int = 0
right: int = len(nums)
def binary_search(arr: list, x: int, left: int, right: int) -> int:
if left >= right:
return -1
mid = (left + right) // 2
if arr[mid] == x:
return mid
elif x < arr[mid]:
return binary_search(arr, x, left, mid)
else:
return binary_search(arr, x, mid + 1, right)
def divide_search(arr: list, x: int, left: int, right: int) -> list:
if right - left == 1:
return [left, right]
mid = (left + right) // 2
if arr[left] <= arr[mid]:
return [left, mid + 1] if arr[left] <= x <= arr[mid] else divide_search(nums, x, mid, right)
else:
return [mid, right] if arr[mid] <= x <= arr[-1] else divide_search(arr, x, left, mid)
left_divide, right_divide = divide_search(nums, x, left, right)
return binary_search(nums, x, left_divide, right_divide)
def test():
arr = [19, 21, 100, 101, 1, 4, 5, 7, 12]
assert broken_search(arr, 5) == 6