目标是总计每个偶数高达400万。 我认为这样可行,但程序运行不稳定。认为它与if语句有关,但是否则会丢失。这就是我所拥有的。
list = []
a, b = 0, 1
while b <40:
if b%2 == 0:
list.append(b)
a, b = b, a+b
t=sum(list)
print(t)
答案 0 :(得分:4)
这是你最大的问题:
a, b = b, a+b
它有很多可能搞乱你的循环!和其他提到的一样,当b为奇数时,它甚至不会更新任何东西,只有当它是偶数时才会更新,然后你就会卡住。
为什么不以简单的方式做到这一点,范围:
mysum = sum([i for i in range(0, 40, 2)])
用一行来处理所有事情(当然,如果你想要包含数字4,000,000,那么用你的问题替换40和4,000,001。如果你只想要一切但不包括它,请使用只有4,000,000)
答案 1 :(得分:2)
a, b = b, a+b
此行仅在b%2 == 0时运行。我认为您的意思是每次都运行它。它应该进一步缩进一层。
答案 2 :(得分:0)
还可以使用数学规则,其中1和n之间的整数之和等于n*(n+1)/2
。如果我们只想对偶数求和,那就像只考虑一半数来求和并将结果乘以二。
fSumEvenNumbers = lambda x: (x//2)*(x//2+1)
这会给出
fSumEvenNumbers(40000000)
相当于
(2e7)**2 + 2e7
4e14 + 2e7
400000020000000