我在项目euler网站上遇到了问题,而我却陷入了第二个问题.
这是问题所在:
Fibonacci序列中的每个新术语都是通过添加前两个术语生成的.从1和2开始,前10个术语将是:
Run Code Online (Sandbox Code Playgroud)1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和.
这是我的代码:
a = 0
b = 0
c = 2
d = []
x = 1
y = 2
z = [1,2]
while x + y <= 4000000:
z.append(x+y)
x = y
y = z[c]
c += 1
size = len(z)
while a < (size - 1):
if z[a] % 2 == 0:
d.append(z[a])
a += 1
print(sum(d))
Run Code Online (Sandbox Code Playgroud)
我不确定什么行不通.有帮助吗?
迭代数组的pythonic方法是使用in.此外,使用0评估为False:
# Unpythonic
size = len(z)
while a < (size - 1):
if z[a] % 2 == 0:
d.append(z[a])
a += 1
# Pythonic
for num in z:
if not num % 2:
d.append(num)
# Even more pythonic
d = [num for num in z if not num % 2]
Run Code Online (Sandbox Code Playgroud)
只有一个循环的奖金:
a = 1
b = 2
s = 0
while b <= 4000000:
if not b % 2:
s += b
a, b = b, a + b
print(s)
Run Code Online (Sandbox Code Playgroud)