Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка IndexError: list index out of range. Что нужно исправить?

Сабина Абдихаликова Ученик (154), закрыт 4 года назад
Я только начала учить питон и поэтому еще плохо его понимаю

A = []
n = 30
for i in range(0, n):
>a.append(int(input()))
>x = 0
>y = 0
>for i in range(1, n):
>>if a[i] % 2 != 0:
>>>x += 1
>>>y += a[i]
s = x // y
print(s)

И на что жалуется Idle:

if a[i] % 2 != 0:
IndexError: list index out of range
Дополнен 4 года назад
Спасибо Павлу и Отчеству

a = []
n = 10
for i in range(0, n):
a.append(int(input()))
y = 0
x = 0
for i in range(1, n):
if a[i] % 2 != 0:
x += 1
y += a[i]
s = y // x
print(s)
Лучший ответ
Павел Крезуб Гуру (3561) 4 года назад
Странно что раньше не начал жаловаться, т. к. "А" и "а" - это разные списки и список "а" нигде ранее не объявлен в приведенном коде, а жалуется бедная система на то что запрашивается не существующий индекс "i" в списке "а"

a = []
n = 10
x = 0
y = 0
for i in range(0, n):
>a.append(int(input()))
>if a[i] % 2 != 0:
>>x += 1
>>y += a[i]
s = x // y

правда не понял задачу целочисленного деления количества нечетных чисел на их сумму, результат все время будет 0
Сабина АбдихаликоваУченик (154) 4 года назад
Там a, майл изменил на A
Сабина АбдихаликоваУченик (154) 4 года назад
Искала среднее арифметическое нечетных чисел, точнее пыталась. Спасибо!
Вопрос: x и y обязательно писать до a.append или это не влияет? В моем задании вся часть до a.append изменять нельзя
Сабина АбдихаликоваУченик (154) 4 года назад
всю часть*
ОтчествоМастер (1826) 4 года назад
в python отступы имеют критическую важность, по твоему коду второй цикл находится внутри первого, хотя должен быть после него, соответственно происходит обращение в несуществующую область памяти
Сабина Абдихаликова Ученик (154) Отчество, огромное спасибо!
Остальные ответы
Aleks Nots Просветленный (26679) 4 года назад
У Вас у вложенного ФОР, такая же буква для индексов как и у внешнего, поэтому и фигня получается.

PS
И кроме того верхний предел вложенного цикла должен быть не до n, а меньше, наверное до i, или до i+1, или до len(a) (лень догадываться, что Вы хотели).
Похожие вопросы