まず結論

for i in range(3) は、「3回くり返す」と読むと入りやすいです。

for i in range(3):
    print(i)

実行すると、次のように表示されます。

0
1
2

こんなときに読む記事です

次のような疑問がある人向けです。

  • for i in range(3) が呪文に見える
  • i がどこから出てきたのか分からない
  • なぜ range(3) なのに 3 が表示されないのか分からない

まずは「range(3) が3回分の番号を作り、for がそれを順番に取り出す」と考えると楽です。

iには何が入る?

i には、繰り返しのたびに 012 が順番に入ります。

1回目: i は 0
2回目: i は 1
3回目: i は 2

range(3)1, 2, 3 ではなく、0, 1, 2 です。
ここが最初のつまずきポイントです。

range(1, 4) ならどうなる?

開始する数字を変えたいときは、range(1, 4) のように書けます。

for i in range(1, 4):
    print(i)

表示されるのは 123 です。
最後の 4 は含まれません。

iは別の名前でもいい

i は特別な命令ではありません。変数名です。

for number in range(3):
    print(number)

このように書いても同じです。

何回も同じ処理をしたいとき

回数だけが大事なら、値を使わないこともあります。

for _ in range(3):
    print("こんにちは")

_ は「今回はこの値を使いません」という目印としてよく使われます。

読み方を分解する

for i in range(3): は、次のように分けると読みやすいです。

range(3) が 0, 1, 2 を用意する
for がそれを1つずつ取り出す
取り出した値が i に入る
字下げされた処理を毎回実行する