メインコンテンツへスキップ
Lesson2 / 7

range()関数の使い方

目次

このレッスンで学ぶこと

  • range()関数とは何か
  • range()の3つの使い方
  • for文とrange()の組み合わせ
  • range()の実用例

range()関数とは

range()関数は、連続した整数を生成するオブジェクトを返すPython組み込み関数です。決まった回数だけループしたい場合や、連番の数値を生成する際に使用されます。

range()の基本構造

Python
range(終了値)                    # 0から終了値-1まで
range(開始値, 終了値)             # 開始値から終了値-1まで
range(開始値, 終了値, ステップ)   # 開始値から終了値-1までステップずつ

range()の構成要素

要素説明
range()関数のキーワード必須
開始値最初の値(省略可、デフォルト0)range(1, 10) の1
終了値最後の値(含まれない)range(1, 10) の10
ステップ増加幅(省略可、デフォルト1)range(0, 10, 2) の2

range()の特徴

  • 終了値は含まれない(終了値の1つ前まで生成)
  • 整数のみ対応(小数は使用不可)
  • メモリ効率的(必要なときに数値を生成)
  • for文と組み合わせて繰り返し処理を実現

簡単な例

Python
# 0から4までを生成
for i in range(5):
    print(i)

# 実行結果:
# 0
# 1
# 2
# 3
# 4

# 1から5までを生成
for i in range(1, 6):
    print(i)

# 実行結果:
# 1
# 2
# 3
# 4
# 5

なぜrange()が必要なのか?

for文で決まった回数だけ繰り返したい場合、range()を使うと便利です。

Python
# リストを作る方法(非効率)
for i in [0, 1, 2, 3, 4]:
    print(i)

# range()を使う方法(効率的)
for i in range(5):
    print(i)

range()関数を使うことで、簡潔に連続した数値を生成できます。

💡 豆知識: range()は実際にはリストを作らず、必要なときに数値を生成します。これによりメモリを節約できます。この仕組みを「遅延評価」といいます。


range()の基本

機能: 連続した整数を生成するオブジェクトを返します。

書き方:

Python
range(終了値)
range(開始値, 終了値)
range(開始値, 終了値, ステップ)

用途: 決まった回数の繰り返し、連番の生成、インデックス指定

注意点:

  • 終了値は含まれない(終了値の1つ前まで)
  • 開始値を省略すると0から始まる
  • ステップを省略すると1ずつ増える
Python
# 基本的な使い方
for i in range(5):
    print(i)

実行結果:

0
1
2
3
4

range()の3つの使い方

1. range(終了値)

機能: 0から終了値の1つ前まで、1ずつ増える数値を生成します。

書き方:

Python
range(n)  # 0, 1, 2, ..., n-1

用途: n回繰り返したいとき

注意点: 0から始まる(1からではない)

Python
# 5回繰り返す
for i in range(5):
    print(f"{i + 1}回目")

実行結果:

1回目
2回目
3回目
4回目
5回目

2. range(開始値, 終了値)

機能: 開始値から終了値の1つ前まで、1ずつ増える数値を生成します。

書き方:

Python
range(start, stop)  # start, start+1, ..., stop-1

用途: 特定の範囲の数値が必要なとき

注意点: 終了値は含まれない

Python
# 1から5まで
for i in range(1, 6):
    print(i)

実行結果:

1
2
3
4
5

3. range(開始値, 終了値, ステップ)

機能: 開始値から終了値の1つ前まで、ステップずつ増える数値を生成します。

書き方:

Python
range(start, stop, step)  # start, start+step, start+2*step, ...

用途: 2ずつ増やす、逆順、奇数・偶数のみ

注意点: ステップは負の値も可能

Python
# 2ずつ増える
for i in range(0, 10, 2):
    print(i)

実行結果:

0
2
4
6
8

range()の応用

逆順のrange()

Python
# 10から1まで逆順
for i in range(10, 0, -1):
    print(i)

print("発射!")

実行結果:

10
9
8
7
6
5
4
3
2
1
発射!

奇数だけ

Python
# 1から10までの奇数
for i in range(1, 11, 2):
    print(i)

実行結果:

1
3
5
7
9

偶数だけ

Python
# 0から10までの偶数
for i in range(0, 11, 2):
    print(i)

実行結果:

0
2
4
6
8
10

具体例

例1: 九九の表

Python
number = 7

print(f"=== {number}の段 ===")
for i in range(1, 10):
    result = number * i
    print(f"{number} × {i} = {result}")

実行結果:

=== 7の段 ===
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 4 = 28
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63

例2: 合計の計算

Python
# 1から100までの合計
total = 0
for i in range(1, 101):
    total += i

print(f"1から100までの合計: {total}")

実行結果:

1から100までの合計: 5050

例3: インデックス付きループ

Python
fruits = ["りんご", "バナナ", "オレンジ", "ぶどう"]

for i in range(len(fruits)):
    print(f"{i + 1}番目: {fruits[i]}")

実行結果:

1番目: りんご
2番目: バナナ
3番目: オレンジ
4番目: ぶどう

例4: 西暦の表示

Python
# 2020年から2025年まで
print("=== 過去5年間 ===")
for year in range(2020, 2026):
    print(f"{year}年")

実行結果:

=== 過去5年間 ===
2020年
2021年
2022年
2023年
2024年
2025年

例5: 温度の変換表

Python
# 摂氏0度から100度まで、10度刻み
print("=== 摂氏 → 華氏変換表 ===")
for celsius in range(0, 101, 10):
    fahrenheit = celsius * 9 / 5 + 32
    print(f"{celsius}°C = {fahrenheit}°F")

実行結果:

=== 摂氏 → 華氏変換表 ===
0°C = 32.0°F
10°C = 50.0°F
20°C = 68.0°F
30°C = 86.0°F
40°C = 104.0°F
50°C = 122.0°F
60°C = 140.0°F
70°C = 158.0°F
80°C = 176.0°F
90°C = 194.0°F
100°C = 212.0°F

例6: カウントダウンタイマー

Python
import time

print("カウントダウン開始!")
for i in range(5, 0, -1):
    print(i)
    # time.sleep(1)  # 1秒待つ(実際に使う場合)

print("スタート!")

実行結果:

カウントダウン開始!
5
4
3
2
1
スタート!

range()とlist()

range()をリストに変換

Python
# range()オブジェクト
numbers = range(5)
print(numbers)  # range(0, 5)

# リストに変換
numbers_list = list(range(5))
print(numbers_list)  # [0, 1, 2, 3, 4]

# 1から10まで
print(list(range(1, 11)))  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数のリスト
print(list(range(0, 11, 2)))  # [0, 2, 4, 6, 8, 10]

実行結果:

range(0, 5)
[0, 1, 2, 3, 4]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 2, 4, 6, 8, 10]

よくある間違い

間違い1: 終了値が含まれると思う

Python
# 間違った理解
for i in range(1, 5):
    print(i)
# 出力: 1, 2, 3, 4(5は含まれない!)

# 5を含めたい場合
for i in range(1, 6):
    print(i)
# 出力: 1, 2, 3, 4, 5

間違い2: range()に小数を使う

Python
# 間違い: range()は整数のみ
for i in range(0.5, 5.5):  # エラー
    print(i)

# 正しい: 整数を使い、後で割る
for i in range(5, 55, 5):
    print(i / 10)
# 出力: 0.5, 1.0, 1.5, 2.0, ..., 5.0

間違い3: range()の順序

Python
# 間違い: 開始値 > 終了値なのにステップが正
for i in range(10, 0):  # 何も実行されない
    print(i)

# 正しい: 負のステップを使う
for i in range(10, 0, -1):
    print(i)

間違い4: range()を直接表示

Python
# 期待と違う結果
print(range(5))  # range(0, 5) と表示される

# リストとして表示したい場合
print(list(range(5)))  # [0, 1, 2, 3, 4]

間違い5: ステップが0

Python
# エラー: ステップは0にできない
for i in range(1, 10, 0):  # ValueError
    print(i)

# ステップは1以上または-1以下
for i in range(1, 10, 1):  # OK
    print(i)

練習問題

問題1(基礎)⭐☆☆

1から10までの数値を表示してください。

💡 ヒント

range(1, 11) を使います。

✅ 解答例
Python
for i in range(1, 11):
    print(i)

実行結果:

1
2
3
4
5
6
7
8
9
10

解説: range()の終了値は含まれないので、11を指定します。


問題2(基礎)⭐☆☆

10から1までの数値を逆順で表示してください。

💡 ヒント

負のステップを使います。

✅ 解答例
Python
for i in range(10, 0, -1):
    print(i)

実行結果:

10
9
8
7
6
5
4
3
2
1

解説: ステップに-1を指定すると逆順になります。


問題3(応用)⭐⭐☆

1から50までの5の倍数を表示してください。

💡 ヒント

ステップを5にします。

✅ 解答例
Python
for i in range(5, 51, 5):
    print(i)

実行結果:

5
10
15
20
25
30
35
40
45
50

解説: 開始値5、終了値51、ステップ5で5の倍数だけを生成します。


まとめ

このレッスンでは、range()関数で連続した整数を扱う方法を学びました。

  • range()は、回数指定や連番処理でfor文と組み合わせて使います。
  • range(終了), range(開始, 終了), range(開始, 終了, ステップ) を使い分けられます。
  • 終了値は含まれないという仕様を理解して実装できるようになりました。
  • ステップ指定を使うと、間隔を空けた反復や逆順処理が可能です。
  • 目的に応じて範囲を明示すると、オフバイワンエラーを防げます。