Напишите программу, которой на вход подается последовательность чисел через пробел, а также запрашивается у пользователя любое число.
В качестве задания повышенного уровня сложности можете выполнить проверку соответствия указанному в условии ввода данных.
Далее программа работает по следующему алгоритму:
1. Преобразование введённой последовательности в список
2. Сортировка списка по возрастанию элементов в нем (для реализации сортировки определите функцию)
3. Устанавливается номер позиции элемента, который меньше введенного пользователем числа, а следующий за ним больше или равен этому числу.
При установке позиции элемента воспользуйтесь алгоритмом двоичного поиска.
Подсказка: Помните, что у вас есть числа, которые могут не соответствовать заданному условию. В этом случае необходимо вывести соответствующее сообщение
Python
Задачка по пайтону
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)))
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)))
Похожие вопросы
- Что лучше всего выбрать:1с или Пайтон?Пайтон выглядит поперспективнее, а 1с устарел( по моему новичковому взгляду )
- Программирование пайтон, с чего начать ?
- Пайтон. Программа for while
- Пайтон мучаюсь уже долго потому что уже 2 день на пайтоне но фига неправилно пишу помогите пж
- Задача 2. Дзен Пайтона
- Со скольки лет лучше изучать программирование? И какой лучше всего, пайтон?
- Программирование, пайтон программа.
- Сложно выучить язык Пайтона?
- программа на языке пайтон
- Считаете ли вы Пайтон идеальным ЯП для начала?
2) исключение ошибки если введенное число не целое или не число а буквы "два"
3) код не работает если числа в списке нет, а должен выводить ближайшее с его индексом