Четные числа Фибоначчи. Проект Эйлера
В чем моя ошибка?
Я пытаюсь создать список из всех четных чисел Фибоначчи, но в моем списке присутствуют и нечетные числа.
Код:
numbers = [1, 2]
# Создаем ряд Фибоначчи
while numbers[-1] < 4000000:
need = numbers[-2] + numbers[-1]
numbers.append(need)
def filter():
'''Эта функция оставляет только четные числа
в списке numbers
'''
for num in numbers:
if (num % 2) != 0:
numbers.remove(num)
print(numbers)
filter()
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
for num in numbers:
if (num % 2) != 0:
numbers.remove(num)
Вы удаляете элементы из списка во время итерирования по нему. Весь хвост сдвигается на одну позицию к началу при удалении, и Вы пропускаете элемент, идущий сразу за удаляемым.
Автор решения: passant
→ Ссылка
Все немного проще и менее ресурсоемко.
numbers = [1, 2]
odd_numbers=[]
while numbers[-1] < 4000:
need = numbers[-2] + numbers[-1]
numbers[-2],numbers[-1]=numbers[-1],need
if (need % 2) == 0:
odd_numbers.append(need)
print (odd_numbers)
Результат:
[8, 34, 144, 610, 2584]
Индексацию numbers оставил исключительно для вашего удобства, что-бы вас не запутать. На самом деле там, конечно, индексы разумнее использовать 0 и 1.