gpt4 book ai didi

python - 这个简单的 python 代码有什么问题?

转载 作者:行者123 更新时间:2023-11-28 19:53:54 24 4
gpt4 key购买 nike

为什么它不能给出 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)

最佳答案

已经有其他答案解决了您代码中的特定错误,因此我想提供一个完全不同的实现来实现您的既定目标:

giving out correct total of first even fibonacci numbers upto 4 mn

如果您想求偶数斐波那契数之和达到某个极限,下面的代码可能是实现它的更实用的方法。它基于组合 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))

输出

1089154

编辑

OP 到底在问什么是模棱两可的。

  • 如果 OP 想对偶数斐波那契项求和直到总和超过 4,000,000,那么答案就是我上面所说的 - 1089154。

  • 如果 OP 想要对所有小于 4,000,000 的斐波纳契数项求和,则表达式 if total + x > limit 将更改为 x > limit 答案是 4613732。

关于python - 这个简单的 python 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com