为什么它没有给出正确的第一个甚至斐波纳契数最多达到400万的总数?
x = 1
y = 2
list = [1,2]
while y< 4000000:
z= x+y
x=y
y=z
list.append (y)
list_even = []
for a in list:
if a%2 == 0:
list_even.append (a)
else:
pass
total = sum(list_even)
print (total)
Run Code Online (Sandbox Code Playgroud)
还有其他答案已经解决了代码中的特定错误,所以我想提供一个完全不同的实现来实现您的既定目标:
给出正确的第一个甚至斐波纳契数的总数高达4百万
如果你想找到偶数Fibonacci数的总和达到某个极限,下面的代码可能是实现它的更实用的方法.它基于组合Python生成器,这应该有助于使代码更容易遵循和更可重用.
def fib():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def evens(l):
for x in l:
if x % 2 == 0:
yield x
def sum_even_fibonacci(limit):
total = 0
for x in evens(fib()):
if total + x > limit:
return total
total += x
if __name__ == '__main__':
print(sum_even_fibonacci(4000000))
Run Code Online (Sandbox Code Playgroud)
产量
1089154
Run Code Online (Sandbox Code Playgroud)
编辑
确切地说OP正在问什么是模棱两可的.
如果OP希望总和甚至斐波纳契项,直到总和超过4,000,000,那么答案就是我上面所说的 - 1089154.
如果OP希望将所有甚至斐波那契项都加在4,000,000以下,则表达式if total + x > limit将改为,x > limit答案为4613732.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |