解決策はおそらく単純ですが、わかりません。ここにコードがありますが、これは簡単なフィボナッチ数生成器です。目標は、フィボナッチ数が4,000,000以下であってもすべて合算することです。Python:モジュロ演算子での奇妙な振る舞い
私のアプローチは、最初の4,000,000の下にすべてのフィボナッチ数を生成することで、その後、次のいずれか は、A)から、奇妙なものを削除する(これは正常に動作します) b)は「偶数」)も、ものと(新しいリストを生成しますリスト "すべて"
しかし、後者の場合、出力は理解できない理由のため次のようになります。 [2,5,8,21,34,89,144,377,610,1597 、2584、6765、10946、28657、46368、121393、196418、514229、832040、2178309、3524578]
何か助けていただければ幸いです。ありがとう!
all = []
even = []
def fibonacci():
a, b = 1, 2
while a < 4000000:
all.append(a)
a, b = b, a + b
print all
##Putting all the even fibonacci numbers in a different list and summing them up works fine
# for i in all:
# if i % 2 == 0:
# even.append(i)
# print even
# print sum(even)
# But for some strange reason I can't figure out how to remove the odd numbers from the list
for i in all:
if i % 2 != 0:
all.remove(i)
print all
print sum(all)
fibonacci()
を私はあなたが変数名として「すべて」を使用していないお勧めします。 [all](http://docs.python.org/library/functions.html#all)という非常に便利なビルトインがあり、とても便利です。 – DSM
DSM、これを指摘してくれてありがとう! – talkinghead
フィボナッチシーケンスについて誰かが驚いた場合:はい、通常、0,1,1,2、...で始まりますが、この問題のProject Eulerの指示では、1,2、... 2で始まります。 – talkinghead