2

Python を 2 日間学習しました :) そして今、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 たびに新しい空を作成しています。

また、おそらくループが終了した後で、おそらくリストの合計を出力したいと思うでしょう。

すなわち、

...
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

数値を追加する直前に新しい空のリストを作成しているため、要素が 1 つのリストしかありません。開始する前に、空の 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 に答える