【Python】for文を使って1から100までの和を計算する
基本的なfor文での和の計算
Pythonでは、for文を使って1から100までの整数の合計を計算できます。基本的なコードは以下のとおりです。
total = 0
for i in range(1, 101):
total += i
print(total)
このコードの動作を詳しく説明します:
total
を 0 に初期化する。range(1, 101)
で 1 から 100 までの整数を生成する。- ループを 100 回繰り返し、各回
i
の値をtotal
に加算する。 - ループ終了後、
print(total)
で結果を表示する。
この方法は初心者にとって理解しやすく、基本的な繰り返し処理の練習にもなります。
range()関数の詳細
range()
関数は、Pythonの組み込み関数で、指定した範囲の数値を生成するイテラブルオブジェクトを返します。
例えば、以下のように動作します。
print(list(range(1, 6))) # [1, 2, 3, 4, 5]
基本的な構文は次のとおりです。
range(start, stop, step)
start
: 開始値(省略可能、デフォルトは0)stop
: 終了値(この値自体は含まれない)step
: 増加値(省略可能、デフォルトは1)
例えば、2 ずつ増加する数列を生成する場合:
print(list(range(1, 10, 2))) # [1, 3, 5, 7, 9]
他の方法との比較
for文以外にも、1から100までの和を求める方法はいくつかあります。
while文を使う
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(total)
この方法では、while
ループを使用して、変数 i
が 100 に達するまで加算を繰り返します。
組み込み関数 sum() を使う
print(sum(range(1, 101)))
Pythonの sum()
関数を使うと、簡潔に書けます。
数学的な公式を使う
1 から n までの自然数の和は以下の公式で求められます。
n * (n + 1) // 2
これを使うと、Pythonでは次のように計算できます。
n = 100
print(n * (n + 1) // 2)
パフォーマンスの考慮
for文を使った方法はシンプルですが、計算量は O(n) になります。数学的な公式を使うと O(1) の計算量で済むため、大きな値の場合は公式を使う方が高速です。
例えば、n = 10^6
の場合、それぞれの処理時間を比較すると次のようになります。
import time
# for文
start = time.time()
total = 0
for i in range(1, 10**6 + 1):
total += i
end = time.time()
print(f"for文の時間: {end - start:.6f}秒")
# 数学的な公式
start = time.time()
total = (10**6 * (10**6 + 1)) // 2
end = time.time()
print(f"数学的公式の時間: {end - start:.6f}秒")
実践的な応用例
1から100までの和を使う実践的な例をいくつか紹介します。
偶数のみを合計する
total = 0
for i in range(2, 101, 2):
total += i
print(total)
奇数のみを合計する
total = 0
for i in range(1, 101, 2):
total += i
print(total)
リスト内包表記を使う
print(sum([i for i in range(1, 101)]))
リスト内包表記を使って偶数のみ合計
print(sum([i for i in range(1, 101) if i % 2 == 0]))
関数として定義する
def sum_n(n):
return sum(range(1, n + 1))
print(sum_n(100))
このように、for文を活用すると、さまざまな応用が可能です。