誰でもこのコードの完全な例を教えてもらえますか? 合計を出力すると、結果の合計が 21 (つまり、現在の合計) になるのはなぜですか?
end=6
total = 0
current = 1
while current <= end:
total += current
current += 1
print total
Because 1+2+3+4+5+6
is 21
. Why is that mysterious?
通常、基本的なデバッグを導入することで、この種のことの真相を突き止めることができます。各反復後に何が起こっているかを確認できるように、コードのループ内に print を追加しました。
end=6
total = 0
current = 1
while current <= end:
total += current
current += 1
print "total: ", total, "\tcurrent: ", current
print total
出力は次のとおりです。
total: 1 current: 2
total: 3 current: 3
total: 6 current: 4
total: 10 current: 5
total: 15 current: 6
total: 21 current: 7
21
ここで何が起こっているかを要約すると、合計と電流はそれぞれ 0 と 1 に初期化されます。最初のループで合計はtotal += current
(と同等total = total + current
) を使用して設定されます。つまり、合計 = 0+1 です。最初のループはそれぞれ 1 と 2 です。
2 番目のループtotal += current
では、total = 1+2 (前のループの終了時の値) などと評価されます。