Pythonでfor文による繰り返し処理を使う方法をソースコード付きで解説します。
for文(繰り返し)
for文とは?
プログラムの「流れ(処理の順番)」をコントロールする文を制御構文といいます。
通常、プログラムは上から下へ順番に実行されますが、for文という制御構文を使って「イテラブルからデータを取り出し終わるまで同じ処理を繰り返す」ことができます。
書式
for 変数 in イテラブル: 処理(ブロック)
部分 | 説明 |
---|---|
変数 |
取り出した要素を一時的に入れるための変数 |
イテラブル |
繰り返し可能なデータの集まり(リスト、文字列、辞書、rangeなど) |
処理(ブロック) | インデントされた処理。取り出した要素に対して毎回実行される。 |
in演算子 | リスト内に指定した値があるか否かを確かめる演算子です。 |
イテラブルから「要素」を順番に取り出します。取り出した「要素の値」は変数に格納され、ブロック(インデントされた「処理内容」の部分)を繰り返し実行します。
インデントとは、行の先頭にスペースを入れて「この処理はfor文の中ですよ」とPythonに教えるためのルールです。
■ブロックってなに?
インデントされた複数行の処理をまとめて「ブロック」と呼びます。for文のブロックは、繰り返し実行される部分です。
サンプルコード
以下のコードは、for文でリストの要素を順番に取り出す例です。
# 勇者ぴこりの袋(リスト=イテラブル)
item_bag = ["剣", "弓", "やくそう", "魔法の石"]
print("袋の中身を確認中…")
# for文でリストから 「要素」を順番に取り出して表示
for item in item_bag:
# ブロック内の処理
print(f"→ {item}")
→ 剣
→ 弓
→ やくそう
→ 魔法の石
item
には袋から取り出したアイテムが1つずつ入ります。
リストの使い方については、以下ページでさらに詳しく解説しています。

「for文とin演算子」の使い方については、以下ページでさらに詳しく解説しています。

for文 + range関数
range関数とは?
range()
関数は、指定した範囲の整数を順番に生成する関数です。
書き方 | 説明 | 例 |
---|---|---|
range(終了) |
0から「終了−1」まで | range(5) → 0,1,2,3,4 |
range(開始, 終了) |
「開始」から「終了−1」まで | range(2, 5) → 2,3,4 |
range(開始, 終了, ステップ) |
「開始」から「終了−1」まで、ステップずつ | range(1, 10, 2) → 1,3,5,7,9 |
書式
for文とrange()
関数組み合わせることで、「何回繰り返すか」「どの数字からどこまで繰り返すか」を自由に指定できます。
for 変数 in range(開始, 終了, ステップ): 処理
終了だけ指定した場合は、「0」から「指定した終了の値」だけ繰り返します。
サンプルコード①
以下のコードは、range関数で終了だけ指定した場合の使用例です。
for turn in range(5):
print(f"{turn}ターン目:ぴこりは攻撃した!")
1ターン目:ぴこりは攻撃した!
2ターン目:ぴこりは攻撃した!
3ターン目:ぴこりは攻撃した!
4ターン目:ぴこりは攻撃した!
サンプルコード②
以下のコードは、range関数で開始と終了だけ指定した場合の使用例です。
for turn in range(1, 5):
print(f"{turn}ターン目:ぴこりは攻撃した!")
2ターン目:ぴこりは攻撃した!
3ターン目:ぴこりは攻撃した!
4ターン目:ぴこりは攻撃した!
サンプルコード③
以下のコードは、range関数で開始、終了、ステップを指定した場合の使用例です。
for turn in range(1, 5, 2):
print(f"{turn}ターン目:ぴこりは攻撃した!")
3ターン目:ぴこりは攻撃した!
for文 + enumerate関数
Python3では、for文 + enumerateで、リストから要素とインデックス(要素番号)を抽出できます。
書式
for 変数名1, 変数名2 in enumerate(リスト名):
※変数1に要素番号、変数2に値が代入されます。
for文はリストの要素数だけループします。
#-*- coding:utf-8 -*- # リスト宣言 array = ["沖田", "武蔵", "モードレッド"] # インデックスと要素を取り出し for i, e in enumerate(array): print("要素番号:", i, ", 値:", e) """ 要素番号: 0 , 値: 沖田 要素番号: 1 , 値: 武蔵 要素番号: 2 , 値: モードレッド """

for文 + break文(強制終了)
for
文による繰り返し(ループ)を強制的に終了したい**場合には break
文を使います。
書式
for 変数 in イテラブル:
if 条件式:
break
処理
キーワード | 説明 |
---|---|
for |
繰り返し処理の開始 |
if 条件式 |
特定の条件をチェック |
break |
条件を満たしたらループを強制終了 |
処理 |
条件に合わない場合に実行される処理 |
サンプルコード
以下のコードは、for文 + break文(強制終了)の使用例です。
# エリア内に落ちているアイテムのリスト
area_items = ["剣", "弓", "呪われた盾", "やくそう"]
print("■勇者ぴこりはエリアのアイテムを探索中…")
# エリア内のアイテム探索
for item in area_items:
if item == "呪われた盾":
print("⚠️ 勇者ぴこりは呪われた盾を発見した!探索を中断します")
break
print(f"→勇者ぴこりは「{item}」を拾った!")
print("■勇者ぴこりはエリアのアイテム探索を終了した!")
→勇者ぴこりは「剣」を拾った!
→勇者ぴこりは「弓」を拾った!
⚠️ 勇者ぴこりは呪われた盾を発見した!探索を中断します
■勇者ぴこりはエリアのアイテム探索を終了した!
for文でリスト area_items から “呪われた盾” を取り出したときにbreak文が実行され、探索(繰り返し処理)が中断されます。

for文 + continue文(スキップ)
for
文ではストなどの要素を順番に処理する際、特定の条件を満たしたときだけ“その回の処理をスキップ”したいことがあります。そんなときに使うのが continue
文です。
書式
for 変数 in イテラブル:
if 条件式:
continue
処理
キーワード | 説明 |
---|---|
if 条件式 |
スキップしたい条件を指定 |
continue |
条件に合った場合、その回の処理をスキップして次へ |
処理 |
条件に合わない場合に実行される処理 |
サンプルコード
以下のコードは、for文 + continue文(スキップ)の使用例です。
# エリア内に落ちているアイテムのリスト
area_items = ["剣", "弓", "呪われた盾", "やくそう"]
print("■勇者ぴこりはエリアのアイテムを探索中…")
# エリア内のアイテム探索
for item in area_items:
if item == "呪われた盾":
print("⚠️ 勇者ぴこりは「呪われた盾」をスルーした!")
continue
print(f"→ 勇者ぴこりは「{item}」を拾った!")
print("■勇者ぴこりはエリアのアイテム探索を終了した!")
→ 勇者ぴこりは「剣」を拾った!
→ 勇者ぴこりは「弓」を拾った!
⚠️ 勇者ぴこりは「呪われた盾」をスルーした!
→ 勇者ぴこりは「やくそう」を拾った!
■勇者ぴこりはエリアのアイテム探索を終了した!
for文でリスト area_items から “呪われた盾” を取り出したときにcontinue文が実行され、その回だけアイテム収集をスルーします。
業務だと、ログファイル処理で「コメント行だけ飛ばす」といった処理にcontinue文が使われます。

for文 + pass文(何もしない)
for
文ではリストなどの要素を順番に処理しますが、開発中のコードなど、特定の条件に合ったときに「何もしない」だけで処理を続けたい場面があります。そんなときに使うのが pass
文です。
書式
for 変数 in イテラブル:
if 条件式:
pass
処理
キーワード | 説明 |
---|---|
if 条件式 |
特定の条件を指定 |
pass |
条件に合った場合でも何もせず処理を続ける |
処理 |
ループ内で毎回実行される処理(passの後も実行される) |
サンプルコード
以下のコードは、for文 + pass文(何もしない)の使用例です。
# エリア内に落ちているアイテムのリスト
area_items = ["剣", "弓", "呪われた盾", "やくそう"]
print("■勇者ぴこりはエリアのアイテムを探索中…")
# エリア内のアイテム探索
for item in area_items:
if item == "呪われた盾":
pass # 後で呪われた盾に対する勇者ぴこりの反応を書く
print(f"→ 勇者ぴこりは「{item}」を拾った!")
print("■勇者ぴこりはエリアのアイテム探索を終了した!")
→ 勇者ぴこりは「剣」を拾った!
→ 勇者ぴこりは「弓」を拾った!
→ 勇者ぴこりは「呪われた盾」を拾った!
→ 勇者ぴこりは「やくそう」を拾った!
■勇者ぴこりはエリアのアイテム探索を終了した!
pass
文は「何もしない」だけなので、その後の print()
関数は実行されます。つまり "呪われた盾"
に対しても → 拾った!
が表示されてしまいます。スキップしたい場合は continue
を使うべきですが、pass
は開発中のコードを実行する際に、「空の処理を仮置きして構文エラーを防ぐ」場合などに用いられます。

for文 + else文
Pythonでは、for
文の後に else
をつけることで、ループが“最後まで正常に終わったとき”に実行される処理を書くことができます。
書式
for 変数 in イテラブル:
処理
else:
終了後の処理
キーワード | 説明 |
---|---|
for |
繰り返し処理の開始 |
else |
ループが途中で break されずに最後まで終わったときに実行される |
break |
使われた場合、else はスキップされる |
サンプルコード①
以下のコードは、for文 + else文の使用例です。
area_items = ["剣", "弓", "やくそう"]
print("■勇者ぴこりはエリアのアイテムを探索中…")
for item in area_items:
print(f"→ 勇者ぴこりは「{item}」を拾った!")
else:
print("✅ 勇者ぴこりはすべてのアイテムを拾い終えた!")
→ 勇者ぴこりは「剣」を拾った!
→ 勇者ぴこりは「弓」を拾った!
→ 勇者ぴこりは「やくそう」を拾った!
✅ 勇者ぴこりはすべてのアイテムを拾い終えた!
サンプルコード②
以下のコードは、for文 + else文 + break文の使用例です。
area_items = ["剣", "呪われた盾", "弓", "やくそう"]
print("■勇者ぴこりはエリアのアイテムを探索中…")
for item in area_items:
if item == "呪われた盾":
print("⚠️ 呪われた盾を発見!探索を中断します")
break
print(f"→ 勇者ぴこりは「{item}」を拾った!")
else:
print("✅ 勇者ぴこりはすべてのアイテムを拾い終えた!")
→ 勇者ぴこりは「剣」を拾った!
⚠️ 呪われた盾を発見!探索を中断します
break
文が実行されると繰り返し処理が中断されるため、else
文が実行されず「探索完了メッセージ」は表示されません。
ネストされたfor文(多重forループ)
Pythonでは、for
文の中にさらに for
文を書くことで、複数の要素を組み合わせて処理することができます。
これを「ネストされたfor文」または「多重forループ」と呼びます。
書式
for 変数1 in イテラブル1:
for 変数2 in イテラブル2:
処理
キーワード | 説明 |
---|---|
for × 2 |
外側と内側のループで組み合わせを処理 |
変数1 |
外側の要素(例:キャラクター) |
変数2 |
内側の要素(例:アイテム) |
処理 |
すべての組み合わせに対して実行される処理 |
サンプルコード
以下のコードは、2重forループの使用例です。
characters = ["勇者ぴこり", "魔法使いルーナ"]
items = ["剣", "弓", "盾"]
print("■キャラクターと装備の組み合わせ一覧")
for char in characters:
for item in items:
print(f"{char} は {item} を入手した!")
勇者ぴこり は 剣 を装備した!
勇者ぴこり は 弓 を装備した!
勇者ぴこり は 盾 を装備した!
魔法使いルーナ は 剣 を装備した!
魔法使いルーナ は 弓 を装備した!
魔法使いルーナ は 盾 を装備した!
外側のループでキャラクターを1人ずつ取り出し、内側のループでアイテムを1つずつ取り出します。
このような、forループのネスト構造は、「マップ × 敵」「ターン × 行動」「キャラ × スキル」などにも応用可能です。
練習問題(基礎固め & 資格勉強用)
本ページで学んだ内容の基礎固め、また「Python 3 エンジニア認定基礎試験」や「基本情報技術者試験」などの資格対策にも役立つ練習問題を作成しました。
【問題1】for文の基本構文(難易度★☆☆☆☆)
次のうち、Pythonでfor文を正しく使ってリストの要素を表示する方法を選びなさい。
A.
for x in [1, 2, 3] print(x)
B.
for x in [1, 2, 3]: print(x)
C.
for x: in [1, 2, 3] print(x)
D.
for x in [1, 2, 3] { print(x) }
解説:Pythonのfor文は「for 変数 in イテラブル:」の形式で書きます。コロン
:
の後にインデントされた処理を書く必要があります。
【問題2】range関数の動作(難易度★☆☆☆☆)
range(3)
の戻り値として正しいものを選びなさい。
A. [1, 2, 3]
B. [0, 1, 2, 3]
C. [0, 1, 2]
D. [3, 2, 1]
解説:
range(3)
は 0 から始まり、3未満の整数を順番に生成します。つまり [0, 1, 2]
です。
【問題3】文字列のfor文処理(難易度★☆☆☆☆)
次のコードの出力として正しいものを選びなさい。
for c in "魔法":
print(c)
A. 魔法
B. ['魔', '法']
C. 魔\n法
D. 魔\n法
※ \n
は改行コード
解説:文字列はイテラブルなので、for文で1文字ずつ取り出して表示できます。
print()
は改行されるため、1文字ずつ縦に表示されます。
【問題4】辞書のfor文処理(難易度★★☆☆☆)
次のコードの出力として正しいものを選びなさい。
d = {"HP": 100, "MP": 50}
for key in d:
print(key)
A. HP\nMP
B. 100\n50
C. ('HP', 100)\n('MP', 50)
D. HP:100\nMP:50
※ \n
は改行コード
解説:辞書をfor文で回すと、デフォルトではキーだけが取り出されます。値を取り出すには
d[key]
や d.items()
を使います。
【問題5】enumerateの使い方(難易度★★☆☆☆)
次のコードの出力として正しいものを選びなさい。
fruits = ["りんご", "バナナ"]
for i, fruit in enumerate(fruits):
print(i, fruit)
A. 0 りんご\n1 バナナ
B. りんご 0\nバナナ 1
C. 1 りんご\n2 バナナ
D. 0:りんご\n1:バナナ
※ \n
は改行コード
解説:
enumerate()
はインデックスと要素を同時に取り出す関数です。最初のインデックスは0から始まります。
【問題6】for文 + break(難易度★★★☆☆)
次のコードの出力として正しいものを選びなさい。
items = ["剣", "呪われた盾", "弓"]
for item in items:
if item == "呪われた盾":
break
print(item)
A. 剣\n呪われた盾\n弓
B. 剣
C. 剣\n弓
D. 呪われた盾
※ \n
は改行コード
解説:
break
はループを強制終了します。条件に一致した時点でループが止まるため、”剣” のみ表示されます。
【問題7】for文 + continue(難易度★★★☆☆)
次のコードの出力として正しいものを選びなさい。
items = ["剣", "呪われた盾", "弓"]
for item in items:
if item == "呪われた盾":
continue
print(item)
A. 剣\n呪われた盾\n弓
B. 剣\n弓
C. 呪われた盾
D. 剣
※ \n
は改行コード
解説:
continue
はその回の処理をスキップします。”呪われた盾” は表示されず、”剣” と “弓” のみが表示されます。
【問題8】ネストされたfor文(難易度★★★★☆)
次のコードの出力として正しいものを選びなさい。
chars = ["ぴこり", "ルーナ"]
skills = ["攻撃", "防御"]
for c in chars:
for s in skills:
print(c, s)
A. ぴこり 攻撃\nぴこり 防御\nルーナ 攻撃\nルーナ 防御
B. ぴこり ルーナ\n攻撃 防御
C. 攻撃 ぴこり\n防御 ルーナ
D. ぴこり 攻撃\nルーナ 防御
※ \n
は改行コード
解説:外側のループでキャラクターを1人ずつ取り出し、内側のループでスキルを1つずつ処理します。組み合わせとして「キャラ × スキル」がすべて表示されます。
【問題9】for文 + else文(難易度★★★★☆)
次のコードの出力として正しいものを選びなさい。
items = ["剣", "弓", "やくそう"]
for item in items:
print(item)
else:
print("探索完了!")
A. 剣\n弓\nやくそう
B. 剣\n弓\nやくそう\n探索完了!
C. 探索完了!
D. 剣\n探索完了!
※ \n
は改行コード
解説:
for
文が最後まで正常に終了すると、else
ブロックが実行されます。`break`が使われていないため、すべてのアイテムが表示された後に「探索完了!」が出力されます。
【問題10】for文 + continue文(応用)(難易度★★★★★)
次のコードの出力として正しいものを選びなさい。
items = ["剣", "", "やくそう", None]
for item in items:
if not item:
continue
print(item)
A. 剣\nやくそう
B. 剣\n\nやくそう\nNone
C. 剣\nやくそう\nNone
D. 剣\nやくそう\n0
※ \n
は改行コード
解説:
not item
は空文字 ""
や None
に対してTrueになります。continue
によってそれらの要素はスキップされ、"剣"
と "やくそう"
のみが表示されます。
関連ページ(もっと学びたい人へ)
Pythonの基礎から応用例まで、以下ページから学ぶことができます。

コメント