2

两天学习 python :) 现在我试图解决Project Euler 问题 #2 ,我需要帮助。

更具体地说,我需要知道如何添加添加到空列表中的数字。我尝试了“总和”,但似乎没有按照教程网站的建议工作。我正在使用python 3。到目前为止,这是我的代码:

a = 0
b = 1
n = a+b
while (n < 20):
   a, b = b, a + b
   n = a+b
   if n%2 == 0:
       mylist = []
       mylist.append(n)
       print(sum(mylist))

这输出:

2
8

现在我该如何添加它们?谢谢 :)

4

4 回答 4

4

您做得对(列表的总和),主要问题在于以下语句:

mylist = []

while在循环之前移动它。mylist 否则,您每次通过循环都会创建一个新的 empy 。

此外,您可能希望在完成循环后打印列表的总和。

IE,

...
mylist = []
while (n < 20):
   a, b = b, a + b
   n = a+b
   if n%2 == 0:
       mylist.append(n)

print(sum(mylist))
于 2012-07-15T03:29:21.143 回答
2

在向其附加数字之前,您正在创建一个新的空列表,因此您将永远只有一个元素列表。在开始之前创建一次空的 mylist。

于 2012-07-15T03:30:14.800 回答
1

由于您似乎已经解决了列表问题,因此我建议您使用列表的替代方法。

尝试以下使用整数对象而不是列表的解决方案:

f = 0
n = 1
r = 0

s = 0

while (n < 4000000):
    r = f + n
    f = n
    n = r
    if n % 2 == 0:
        s += n

print(s)
于 2012-07-15T04:40:54.420 回答
0

正如@Ned 和@Levon 指出的那样。

a = 0
b = 1
n = a+b
mylist = []
while (n < 20):
   a, b = b, a + b
   n = a+b
   if n%2 == 0:
       mylist.append(n)
print(sum(mylist))
于 2012-07-15T03:35:31.077 回答