Top.Mail.Ru
Ответы

Помогите найти ошибку в задаче python

Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу.

Формат ввода

В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива. Во второй строке содержатся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000). В третьей строке вводится одно целое число x, не превосходящее по модулю 1000.

Формат вывода

Вывести значение элемента массива, ближайшее к x. Если таких чисел несколько, выведите любое из них.

Пример:
Тест 1
Входные данные:
5
1 2 3 4 5
6

Вывод программы:
5

Тест 2
Входные данные:
5
5 4 3 2 1
3

Вывод программы:
3

Код:

N = int(input())
n = list(map(int, input().split()))
x = int(input())

obrez_spisok = []
l = 0

while l < N:
____obrez_spisok.append(n[l])
____l += 1

find_list = []
i = 0

for i in obrez_spisok:
____e = abs(x - i)
____find_list.append(e)

rez = min(find_list)

print(find_list.index(rez) + 1)

Выдает ошибку в одном из тестов

По дате
По рейтингу
Аватар пользователя
Оракул
8лет

У меня получилась такая программа, решающая эту задачу.
N = int(input('Кол. чисел:'))
a=[int(input('Ввести число:')) for i in range(N)]
x=int(input('Заданное число:'))
b=[abs(a[i]-x) for i in range(len(a))]
print(a[b.index(min(b))])

Аватар пользователя
Ученик

У меня получилось такое решение:

N = int(input('Длинна массива:'))
a = [int(input('Ввести число:')) for i in range(N)]
x = int(input('Заданное число:'))

minraz = (x - a[0])**2 # Минимальная разница по модулю (для сравнения первый элемент)

b = 0 # Нулевой индекс a[i]
i = 0 # Начальная переменная для цикла

while i < len(a):
if (x-a[i])**2 <= minraz:
minraz = (x-a[i])**2
b = i
i += 1
print('Последовательность: ', a)
print('Самое близкое значение элемента массива: ', a[b])
print('Индекс элемента массива: ', b)