1 2 3 4 5 6 7 |
answer = 0 fibon = [0, 1] while fibon[-1] <= 4000000: if fibon[-1] % 2 == 0: answer += fibon[-1] fibon.append(fibon[-1] + fibon[-2]) print(answer) |
Вышенаписанный работает, считает сумму ряда фибоначи, не превышающие 4 млн, кратные 2
А этот код не работает
P.S возможно не правильно интерпритировал значения списка с отрицательных, на положительные
1 2 3 4 5 6 7 |
answer = 0 fibon = [0, 1] while fibon[1] <= 4000000: if fibon[1] % 2 == 0: answer += fibon[1] fibon.append(fibon[1] + fibon[0]) print(answer) |
@liroin12133 Первый вариант кода использует отрицательные индексы в списке fibon, например, fibon[-1] и fibon[-2], чтобы получить последние два элемента списка. Это работает, потому что отрицательные индексы отсчитываются с конца списка. В Вашем примере, fibon[-1] соответствует последнему элементу списка, а fibon[-2] соответствует предпоследнему элементу.
Вот исправленный вариант второго кода:
1 2 3 4 5 6 7 |
answer = 0 fibon = [0, 1] while fibon[1] <= 4000000: if fibon[1] % 2 == 0: answer += fibon[1] fibon = [fibon[1], fibon[0] + fibon[1]] print(answer) |