while文の順番に関する疑問:Pythonの合計計算問題について

プログラミング

Pythonを使ったプログラミング学習において、特定のコードの順番に関する疑問が出ることがあります。今回は「while文を使って1から100までの合計を計算するプログラム」における順番について解説します。この問題に関して、①と②の順番が逆でも成り立つのか、その理由を説明します。

問題:while文で1から100までの合計を計算

まず、問題文に記載されているプログラムを確認します。以下のように、whileループを使って1から100までの整数の合計を求めるプログラムです。

goukei = 0
i = 1

while i <= 100:
    goukei = goukei + i  # ①
    i = i + 1  # ②

print(goukei)

順番を変えるとどうなるか?

質問者が疑問に思ったのは、①と②の順番を逆にしてもこのプログラムが動作するかという点です。Pythonでは、変数の更新順序が重要になります。まず、iの値が増える前にgoukeiにiを加算する必要があります。したがって、順番を逆にすると、最初の繰り返しでiが増加してしまい、計算結果に誤差が生じます。

順番が逆だとどうなるか?

もし順番を逆にした場合、つまりi = i + 1を先に実行すると、次のような事象が発生します。

goukei = 0
i = 1

while i <= 100:
    i = i + 1  # ②
    goukei = goukei + i  # ①

print(goukei)

この場合、最初のループでiが1から2に増加し、goukeiに加算されるのは2になります。これが繰り返されるため、最終的な合計が間違ったものになります。

正しい順番で計算する理由

正しい順番は、まず「goukei = goukei + i」でiの値を加算し、その後「i = i + 1」で次の値に進むことです。この順番にすることで、1から100までの正しい合計が計算されます。もし順番が逆だと、iが更新された後にその値が加算されることになり、計算結果がずれてしまうのです。

まとめ

結論として、①と②の順番を逆にしては正しい結果を得ることはできません。プログラムの順番を正確に守ることが重要です。今回の問題では、goukeiにiを加算してからiを増やすのが正しい方法です。順番を守ることで、期待する結果が得られます。

コメント

タイトルとURLをコピーしました