Pythonの選択構造で3の倍数の総和を求める方法とコードの修正ポイント

プログラミング

Pythonで「1から99の整数の中にある3の倍数の総和を表示するプログラム」を作成する問題において、いくつかの誤解が生じやすい部分があります。この記事では、その問題を解決するための正しいプログラムの書き方と、理解を深めるための解説を行います。

問題のコードとその誤解

最初に示されたコードを見てみましょう。

s = 0
for i in range(1, 100, 1):
    if i % 3 == 0:
        s = i + s
    print(s)

上記のコードでは、変数「s」に対して3の倍数を順番に加算していこうとしていますが、誤った位置でprint関数を使っています。結果として、print関数がループの中で実行され、3の倍数が加算される度にその都度「s」の現在の値が表示されてしまいます。

正しいプログラムの書き方

まず、問題の意図に沿って、3の倍数を全て足し合わせた最終的な合計値を表示したい場合、print文はループが終了した後に実行する必要があります。以下のようにコードを修正しましょう。

s = 0
for i in range(1, 100):
    if i % 3 == 0:
        s += i
print(s)

この修正により、ループが全て終了した後に3の倍数の合計が表示されるようになります。ポイントは「s += i」の部分です。これにより、毎回の繰り返しで「i」の値が「s」に加算されていきます。

実行結果とその確認方法

修正後にプログラムを実行すると、1から99までの整数の中で3の倍数(3, 6, 9, …, 99)を全て足した結果が表示されます。

例えば、実行結果として「1683」が表示されます。これが、1から99までの3の倍数の合計です。

選択構造についてのポイント

「if i % 3 == 0」の部分は、選択構造(条件分岐)です。この部分では、「i」が3で割り切れるかどうかをチェックしています。割り切れる場合、つまり3の倍数であれば、合計「s」にその値を加えるという処理が行われます。

このように選択構造を使うことで、条件に合致する場合だけ特定の処理を実行できます。Pythonではこのような構造が簡単に実現できるため、非常に便利です。

まとめ

Pythonで「1から99の整数の中にある3の倍数の総和を表示するプログラム」を作成する際には、ループ内で合計を計算し、最後にその結果を表示するようにすることが大切です。また、選択構造(if文)を用いて特定の条件に合う数値だけを処理する方法も理解しておくと良いでしょう。

コメント

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