#python #python-2.6
#python #python-2.6
Вопрос:
Вот код python :
x=[2, 3, 5, 7]
for i in range(1, 5000):
if i%2:
if i%3:
if i%5:
if i%7:
x.append(i)
x.remove(1)
a = 6
b = 2
for i in range(0, 10):
a = x[a - b]
b = x[a] - x[b]
По какой-то причине я получаю IndexError: list index out of range
, хотя x[] равно 1360, а a равно всего 6, а b равно 2, поэтому я не знаю, почему это происходит. Любая помощь была бы приятной.
Я использую оболочку python. Будет ли это проблемой?
Комментарии:
1. Нам понадобится больше кода, чтобы помочь вам, не могли бы вы добавить больше кода и, возможно, дать дополнительные пояснения, также в вашем коде должен быть отступ 🙂
2. Укажите код, определяющий, что такое
x
,a
b
. Мы не сможем вам помочь, если нет полного кода.3. @decoddecod теперь лучше, вы уверены насчет x.удалить (1) отступ строки? Насколько я понимаю, вы пытаетесь получить список чисел, которые делятся на 2,3,5,7, верно? Тогда не могли бы вы объяснить, почему вы делаете x.remove(1)
4. да, 1 не является простым числом, поэтому я удалил его. Я знаю, что это не самый приятный код, но он работает
5. @decoddecod это полный код? где определены a amp; b? Также ваш первый if не имеет отступа
Ответ №1:
Проблема вашего кода заключается в вашей логике в цикле for.
Вы видите:-
a = 6
b = 2
for i in range(0, 10):
a = x[a - b]
b = x[a] - x[b]
Да, a было 6, а b было 2, но затем, когда вы впервые вводите цикл for,
значение a равно
x [a-b], который равен x [6-2]
т. е. x[4], что дает вам 11
таким образом, значение a равно 11, аналогично для b,
b = x[a] - x[b] # which translates to x[11] - x[2]
которое становится b = 32, и цикл продолжает переходить / изменять значения a amp; b, что приводит вас к IndexError: list index out of range
ожидаемому.
Попробуйте выполнить свою программу в pycharm и отладить ее, вы поймете это лучше, или, может быть, просто поместите несколько инструкций print.
Я не смог ввести так много в комментарии, поэтому опубликовал его в качестве ответа.