Python _ Project Euler 问题 2 - 为什么我的答案代码是错误的?
Python _ Project Euler Question 2 - Why my answer code is wrong?
问:考虑斐波那契数列中不超过四百万的项,求偶数项之和
我的代码:
x = 1
y = 2
ans = 0
evens = []
while x <= 4000000:
ans = x + y
x = y
y = ans
if ans % 2 == 0:
evens.append(ans)
print(sum(evens))
我的结果是 4613730 而它应该是 4613732。
我在这里不明白什么?
您正在跳过 2。
ans
首先用值 3 检查。
ans = x + y
是 3
因为你从 x = 1
和 y = 2
开始
您可以使用 print(evens)
内部循环来查看您错过了什么。现在,前 2 个未打印。
第一个偶数 2 没有插入到 evens
,因此更正代码的一种方法是在开始循环之前将 2 插入偶数。可能有很多方法可以解决这个问题。
x = 1
y = 2
ans = 0
evens = [2]
while x <= 4000000:
ans = x + y
x = y
y = ans
if ans % 2 == 0:
evens.append(ans)
print(evens) # to debug what are in in a 'evens' list
print(sum(evens))
# 4613730
问:考虑斐波那契数列中不超过四百万的项,求偶数项之和
我的代码:
x = 1
y = 2
ans = 0
evens = []
while x <= 4000000:
ans = x + y
x = y
y = ans
if ans % 2 == 0:
evens.append(ans)
print(sum(evens))
我的结果是 4613730 而它应该是 4613732。 我在这里不明白什么?
您正在跳过 2。
ans
首先用值 3 检查。
ans = x + y
是 3
因为你从 x = 1
和 y = 2
您可以使用 print(evens)
内部循环来查看您错过了什么。现在,前 2 个未打印。
第一个偶数 2 没有插入到 evens
,因此更正代码的一种方法是在开始循环之前将 2 插入偶数。可能有很多方法可以解决这个问题。
x = 1
y = 2
ans = 0
evens = [2]
while x <= 4000000:
ans = x + y
x = y
y = ans
if ans % 2 == 0:
evens.append(ans)
print(evens) # to debug what are in in a 'evens' list
print(sum(evens))
# 4613730