我是 Python 的初学者,目前正在解决 Project Euler 的问题(这里是为那些没有听说过它的人准备的)。我已经解决了这个特殊问题,但是它给我留下了一些问题:
def fibsum():
result = []
a, b = 0, 1
while True:
a, b = b, a + b
print b
if b < 4000000 and b % 2 == 0:
result.append(b)
if b > 4000000:
break
print sum(result)
fibsum()
当我使用 PowerShell 运行它时,首先它会打印出我需要的所有数字(尽管它会重复一次),然后最后打印总和:
1
2
3
5
8
...
3524578
5702887 <-- This is over 4,000,000. Why is this here?
4613732 <-- This is the answer.
有什么方法可以让循环在达到超过 4,000,000 的第一个值之前停止迭代?
为了节省空间,如果我决定使用打印,有什么方法可以将所有值以列表格式([、、、、])打印出来?
当我用 yield 或 return(对于变量 b)替换原始代码中的 print 时,程序不会打印任何内容,尽管仍然存在
打印总和(结果)
在函数的最后。
有什么方法可以让这更容易,而不必定义结果和附加值?当值以类似于实际结果的格式返回时, sum() 似乎不起作用。