2016-08-22 6 views

答えて

4

最初に、最初のコードスニペットにインデントエラーがあります。最後の2行は字下げして、whileループ内で実行されるようにする必要があります。

print ('Fibonacci series...') 
a,b = 0,1 
while b<50: 
print(b) 
a = b 
b = a+b 

しかし、これでも正しい結果が得られません。これらの2つのコードスニペットが異なる理由を見てみましょう。

  1. a, b = b, a + b:これは、左側の前右側の評価と、abおよびba + bに割り当てます。つまり、新しい値を割り当てる変数を調べる前に、Pythonは最初にba + bが何であるかを見ます。つまり、aという古い値がb = a + bの設定に使用されます。このhereについて詳しく読むことができます。

    a = 1 
    b = 2 
    a, b = b, a + b # set a to 2, set b to 1 + 2 
    print(a) # 2 
    print(b) # 3 
    
  2. a = b; b = a + b:これはaはまず、bに設定割り当ての計算に使用されるように割り当てを順次、行い。

    a = 1 
    b = 2 
    a = b # set a to 2 
    b = a + b # set b to 2 + 2 
    print(a) # 2 
    print(b) # 4 
    
2
a=b 
b = a+b 

最初のコードサンプルでは、​​b = b * 2に相当します。代わりにb += original_value(a)が必要です。目標値の変更を取得するために

temp = a 
a = b 
b += temp 

:だからどちらかが2番目のコードサンプル(a,b = b, a+b)のように、タプルの割り当てを行う、または一時変数を使用する必要があります。