IndexError: list index out of range. Помогите 4 часа решаю проблему
a = input().split()
c = 0
d = 0
sum = 0
for i in range(len(a)):
a[i] = int(a[i])
c = max(a)
d = min(a)
for i in range(len(a)):
if (c == a[i]) or (d == a[i]): del a[i] - ОШИБКА ЗДЕСЬ - IndexError: list index out of range
for i in range(len(a)):
sum += a[i]
print(d,c)
print(a)
print(sum/3)
Ответы (1 шт):
Автор решения: Евгений
→ Ссылка
У вас в задаче сказано, что решение должно быть оформлено в виде функции
Вариант 1 (с использованием стандартной функции сортировки)
def func(s: str):
a = [int(c) for c in s.split()]
a.sort()
return (str(a[0]) + ' ' + str(a[-1]), sum(a[1:-1])/3)
s = input()
for line in func(s):
print(line)
Вариант 2 (без использования посторонних стандартных функций. Сортируем вручную):
def func(s: str):
a = [int(c) for c in s.split()]
for i in range(len(a)-1):
for j in range(len(a)-i-1):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
return (str(a[0]) + ' ' + str(a[-1]), sum(a[1:-1])/3)
s = input()
for line in func(s):
print(line)
Вариант 3 (тот же В2, но ВСЁ находится в функции. А что, а вдруг?)
def func(s: str):
a = [int(c) for c in s.split()]
for i in range(len(a)-1):
for j in range(len(a)-i-1):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
print(str(a[0]) + ' ' + str(a[-1]))
print(sum(a[1:-1])/3)
s = input()
func(s)
Вариант 4 (без сортировки вообще)
def func(s: str):
a = [int(c) for c in s.split()]
min_i = 0
max_i = 0
for i in range(len(a)):
if a[i] > a[max_i]:
max_i = i
if a[i] < a[min_i]:
min_i = i
print(a[min_i], a[max_i])
if min_i < max_i:
a = a[:min_i] + a[min_i+1:]
a = a[:max_i-1] + a[max_i:]
else:
a = a[:min_i] + a[min_i+1:]
a = a[:max_i] + a[max_i+1:]
print(sum(a)/3)
s = input()
func(s)
Результат работы программы:
5 1 2 4 3
1 5
3.0
Что касательно вашего кода - проблема IndexError обусловлена тем, что оператор del физически удаляет элемент. А поскольку элемент удалён физически, список становится меньше, и, дойдя до индекса len(a)-1 (последний индекс начального списка), программа возвращает исключение
