Python

Задачка по пайтону

Напишите программу, которой на вход подается последовательность чисел через пробел, а также запрашивается у пользователя любое число.
В качестве задания повышенного уровня сложности можете выполнить проверку соответствия указанному в условии ввода данных.
Далее программа работает по следующему алгоритму:
1. Преобразование введённой последовательности в список
2. Сортировка списка по возрастанию элементов в нем (для реализации сортировки определите функцию)
3. Устанавливается номер позиции элемента, который меньше введенного пользователем числа, а следующий за ним больше или равен этому числу.
При установке позиции элемента воспользуйтесь алгоритмом двоичного поиска.
Подсказка: Помните, что у вас есть числа, которые могут не соответствовать заданному условию. В этом случае необходимо вывести соответствующее сообщение
array = [int(x) for x in input("Введите числа от 1 до 999 в любом порядке, через пробел: ").split()]

def merge_sort(array): # "разделяй"
if len(array) < 2: # если кусок массива равен 2,
return array[:] # выход из рекурсии
else:
middle = len(array) // 2 # ищем середину
left = merge_sort(array[:middle]) # рекурсивно делим левую часть
right = merge_sort(array[middle:]) # и правую
return merge(left, right) # выполняем слияние


def merge(left, right):
result = []
i, j = 0, 0

while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1

while i < len(left):
result.append(left[i])
i += 1

while j < len(right):
result.append(right[j])
j += 1

return result

print(merge_sort(array))


def binary_search(array, element, left, right):
if left > right: # если левая граница превысила правую,
return False # значит элемент отсутствует

middle = (right + left) // 2 # находимо середину
if array[middle] == element: # если элемент в середине,
return middle # возвращаем этот индекс
elif element < array[middle]: # если элемент меньше элемента в середине
# рекурсивно ищем в левой половине
return binary_search(array, element, left, middle - 1)
else: # иначе в правой
return binary_search(array, element, middle + 1, right)


while True:
try:
element = int(input("Введите число от 1 до 999: "))
if element < 0 or element > 999:
raise Exception
break
except ValueError:
print("Нужно ввести число!")
except Exception:
print("Неправильный диапазон!")


print(binary_search(array, element, 0, len(array)))
Владислав Белгожанов
Владислав Белгожанов
141
Лучший ответ
Владислав Белгожанов но не работает предупреждение о выходе вводимых цифр за пороговое значение. Вы на скиллфэктори учитесь?
Kuanbek Azhgaliyev 1) у вас отсутствует исключение ошибки except IndexError если число больше чем перечень списка.
2) исключение ошибки если введенное число не целое или не число а буквы "два"
3) код не работает если числа в списке нет, а должен выводить ближайшее с его индексом