0

誰でもこのコードの完全な例を教えてもらえますか? 合計を出力すると、結果の合計が 21 (つまり、現在の合計) になるのはなぜですか?

end=6
total = 0
current = 1
while current <= end:
    total += current
    current += 1

print total
4

3 に答える 3

11

Because 1+2+3+4+5+6 is 21. Why is that mysterious?

于 2013-10-24T10:49:47.613 に答える
3

通常、基本的なデバッグを導入することで、この種のことの真相を突き止めることができます。各反復後に何が起こっているかを確認できるように、コードのループ内に 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 (前のループの終了時の値) などと評価されます。

于 2013-10-24T10:52:58.333 に答える