Seamonkeyこんにちは、SOへようこそ。前回よりもこの質問に力を入れてくださったことをうれしく思います:)
私はあなたと一緒にコードを段階的に見ていきます。単純な問題の場合、グローバル変数を処理する必要があるときに関数が煩わしい可能性があるため、関数を使用しない方が簡単であることがわかります。
#This part of the code gets the entire fibonacci sequence
list_of_numbers = []
even_fibs = []
x,y = 0,1 #sets x to 0, y to 1
while y <= 4000000: #Gets numbers till 4 million
list_of_numbers.append(y)
x, y = y, x+y #updates the fib sequence
このコードブロックでは(必要に応じて関数に変更できます)、最大400万の完全なフィボナッチ数列を計算します。また、2つのリストとを作成しlist_of_numbers
ますeven_fibs
。1つ目は完全なシーケンスを格納するために使用され、2つ目は偶数を格納するために使用されます。次のブロックに進みます。
coord = 0
for number in range(len(list_of_numbers)):
test_number = list_of_numbers [coord]
if (test_number % 2) == 0:
even_fibs.append(test_number)
coord+=1
ここで、リスト内の数値list_of_numbers
が偶数であるかどうかをテストしました。もしそうなら、私はそれらをeven_fibs
リストに追加しました。ここでリストを読むことができます。
print "Normal: ", list_of_numbers #outputs full sequence
print "\nEven Numbers: ", even_fibs #outputs even numbers
print "\nSum of Even Numbers: ", sum(even_fibs) #outputs the sum of even numbers
これは単に私たちの調査結果を出力します。
関数が好きなようですので、ここにコードを追加しました。説明は上と同じです。
#This part of the code gets the entire fibonacci sequence
list_of_numbers = []
even_fibs = []
def fib(list_of_numbers):
x,y = 0,1 #sets x to 0, y to 1
while x+y <= 4000000: #Gets numbers till 4 million
list_of_numbers.append(y)
x, y = y, x+y #updates the fib sequence
return list_of_numbers
def even(list_of_numbers, even_fibs):
coord = 0
for number in range(len(list_of_numbers)):
test_number = list_of_numbers [coord]
if (test_number % 2) == 0:
even_fibs.append(test_number)
coord+=1
return even_fibs
fib(list_of_numbers) #call fib function
even(list_of_numbers, even_fibs) #Call the even function
#Output
print "Normal: ", list_of_numbers
print "\nEven Numbers: ", even_fibs
print "\nSum of Even Numbers: ", sum(even_fibs)