@Nibani
Студень, изучаю выш. мат.

Как исправить ошибку «IndexError: list index out of range» в задаче?

Нужно выполнить задачу "посчитать произведение элементов массива, оканчивающихся на 3", я программу написал, но она выдаёт ошибку "IndexError: list index out of range". Помогите исправить. Сам код ниже.
import random
a = []
m = 1
for i in range(100):
    x = int(random.randint(0, 100))
    if x%10==3:
    	a.append(x)
    	m *= a[i]
print(m)
print('Количество чисел, оканчивающихся на 3 =', str(len(a)))
  • Вопрос задан
  • 439 просмотров
Решения вопроса 1
@zexer
Представьте что прошло 5 итераций цикла и переменная I теперь равна 4, при этом не в каждой итерации произойдет добавление в список.
Так вот когда в очередной итерации программа зайдет в ветку if, она увидит a[I], при этом I будет уже условно 4, а в списке будет два объекта. Как оно должно по-вашему работать?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
aRegius
@aRegius
Python Enthusiast
Как исправить ошибку

Если даже мы опустим саму суть ошибки, которую вам описали, согласитесь, не совсем логично получить искомое число, добавить его в список, а после снова дергать из списка по индексу для того, чтобы с ним чего-то там сделать - сделайте сразу и потом уже добавляйте в список. Поэтому просто поменяйте две строчки кода местами:
if x % 10 == 3:
    m *= x
    a.append(x)

P.S.
1. random.randint нет необходимости оборачивать int
2. len(a) нет необходимости оборачивать str
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы