2013-03-14 3 views
5

фонПроект Эйлера # 2 в Python

Я застрял на эту проблему:

Каждый новый член последовательности Фибоначчи образуется сложением двух предыдущих условий. Начиная с 1 и 2, первые 10 условия будут:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Рассматривая условия в последовательность Фибоначчи, значения которой не превышают четырех миллионов, найдет сумму четных членов.

Я попытался выяснить, был ли вопрос моим генератором чисел Фибоначчи, кодом, который получает четные числа, или даже тем, как я добавляю числа безрезультатно.

Код

я решил хранить номера в списках. Здесь я их создаю.

list_of_numbers = [] #Holds all the fibs 
even_fibs = [] #Holds only even fibs 

Затем я создал свой генератор. Это потенциальная область проблем.

x,y = 0,1 #sets x to 0, y to 1 
while x+y <= 4000000: #Gets numbers till 4 million 
    list_of_numbers.append(y) 
    x, y = y, x+y #updates the fib sequence 

Затем я создал некоторый код, чтобы проверить, является ли число даже, а затем добавить его в список even_fibs. Это еще одна минута .

coord = 0 
for number in range(len(list_of_numbers)): 
    test_number = list_of_numbers [coord] 

    if (test_number % 2) == 0: 
     even_fibs.append(test_number) 
    coord+=1 

И наконец, я показываю информацию.

print "Normal: ", list_of_numbers #outputs full sequence 
print "\nEven Numbers: ", even_fibs #outputs even numbers 
print "\nSum of Even Numbers: ", sum(even_fibs) #outputs the sum of even numbers 

Вопрос

Я знаю, что это ужасный способ задать вопрос, но что не так? Пожалуйста, не дайте мне ответа - просто укажите проблемный раздел.

+2

'для числа в диапазоне (len (list_of_numbers)): test_number = list_of_numbers [coord]' может быть переведено в 'для test_number в list_of_numbers'. Тогда вы можете избавиться от 'coord'. –

+0

+1 для «Пожалуйста, не дайте мне ответа - просто укажите проблемный раздел». –

ответ

4

Вы останавливаетесь, когда сумма следующих двух значений в последовательности превышает 4 000 000. Вы должны учитывать все значения в последовательности до 4,000,000.

+0

Большое спасибо - это время от времени подслушивало меня. – xxmbabanexx

+0

Другой способ сказать это [1, 4000000). – AlexLordThorsen