【发布时间】:2012-03-13 17:27:39
【问题描述】:
解决方案可能相当简单,但我就是想不通。这是代码,它是一个简单的斐波那契数生成器。目标是总结所有低于 4,000,000 的偶数斐波那契数。
我的方法是首先生成所有低于 4,000,000 的斐波那契数,然后: a)用偶数生成一个新列表(“偶数”)(这很好用) b)从列表“all”中删除奇数
但是,在后一种情况下,由于我不明白的原因,输出是: [2、5、8、21、34、89、144、377、610、1597、2584、6765、10946、28657、46368、121393、196418、514229、832040、2178309、3524578]
非常感谢任何帮助。谢谢!
all = []
even = []
def fibonacci():
a, b = 1, 2
while a < 4000000:
all.append(a)
a, b = b, a + b
print all
##Putting all the even fibonacci numbers in a different list and summing them up works fine
# for i in all:
# if i % 2 == 0:
# even.append(i)
# print even
# print sum(even)
# But for some strange reason I can't figure out how to remove the odd numbers from the list
for i in all:
if i % 2 != 0:
all.remove(i)
print all
print sum(all)
fibonacci()
【问题讨论】:
-
我建议你不要使用“all”作为变量名。有一个非常有用的内置函数 all,它真的很方便。
-
DSM,感谢您指出这一点!
-
另外,如果有人想知道斐波那契数列:是的,它通常以 0, 1, 1, 2, ... 开头,但是 Project Euler 对这个问题的说明让它以 1, 2 开头, ...
-
感谢下面的精彩回答!我想我从他们身上学到了很多。