проблема с массивами и результатом операций beign приписывается к значениям - PullRequest
0 голосов
/ 04 марта 2019

Вот код 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 Ответ

0 голосов
/ 04 марта 2019

Проблема вашего кода - ваша логика в цикле 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 [ab], что равно x [6-2]

, т. е. x [4], что дает вам 11

, поэтомузначение a равно 11, аналогично для b

b = x[a] - x[b] # which translates to x[11] - x[2]

, который становится b = 32, и цикл продолжает прыгать / изменять значения a & b, что приводит к ожидаемому IndexError: list index out of range.

Попробуйте выполнить вашу программу в pycharm и отладить ее, вы бы лучше ее поняли, или, возможно, просто добавили бы некоторые операторы печати. ​​

Я не мог напечатать так много в комментарии, поэтому разместил это как ответ.

...