【Python超入門】for文の使い方(練習問題あり)

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つずつ入ります。

リストの使い方については、以下ページでさらに詳しく解説しています。

【Python】リスト型(List)の操作方法を徹底解説(試験対策問題付き)
Pythonのリスト型(List)の使い方をプログラミング入門者向けにわかりやすく解説します。

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

【Python】for文+inでリストから要素抽出(for-each)
この記事では、Python言語の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}ターン目:ぴこりは攻撃した!")
0ターン目:ぴこりは攻撃した!
1ターン目:ぴこりは攻撃した!
2ターン目:ぴこりは攻撃した!
3ターン目:ぴこりは攻撃した!
4ターン目:ぴこりは攻撃した!

サンプルコード②

以下のコードは、range関数で開始と終了だけ指定した場合の使用例です。

for turn in range(1, 5):
    print(f"{turn}ターン目:ぴこりは攻撃した!")
1ターン目:ぴこりは攻撃した!
2ターン目:ぴこりは攻撃した!
3ターン目:ぴこりは攻撃した!
4ターン目:ぴこりは攻撃した!

サンプルコード③

以下のコードは、range関数で開始、終了、ステップを指定した場合の使用例です。

for turn in range(1, 5, 2):
    print(f"{turn}ターン目:ぴこりは攻撃した!")
1ターン目:ぴこりは攻撃した!
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 , 値: モードレッド
"""
【Python】for文+enumerateでリストから要素とインデックス抽出
この記事では、Python言語のfor文+enumerateでリストから要素とインデックス(要素番号)を抽出する方法をソースコード付きで解説します。

for文 + break文(強制終了)

for 文による繰り返し(ループ)を強制的に終了したい**場合には break 文を使います。

RPGで言えば、「敵を見つけたら探索を中断して戦闘に入る」ようなイメージです。

書式

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文が実行され、探索(繰り返し処理)が中断されます。

【Python】break文の使い方(for, whileループの途中終了)
Pythonのbreak文でfor, whileループを途中で終了する方法を入門者向けにソースコード付きでまとめました。

for文 + continue文(スキップ)

for 文ではストなどの要素を順番に処理する際、特定の条件を満たしたときだけ“その回の処理をスキップ”したいことがあります。そんなときに使うのが continue 文です。

RPGで言えば、「罠が仕掛けられたアイテムはスルーして、他のアイテムだけ拾う」ようなイメージです。

書式

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文が使われます。

【Python】continue文の使い方(処理スキップ)
この記事では、Python言語のontinue文を用いて特定の条件を満たす場合だけ処理をスキップする方法をソースコード付きで解説します。

for文 + pass文(何もしない)

for 文ではリストなどの要素を順番に処理しますが、開発中のコードなど、特定の条件に合ったときに「何もしない」だけで処理を続けたい場面があります。そんなときに使うのが pass 文です。

RPGで言えば、「呪われたアイテムは拾わず、ただ見て通り過ぎる」ようなイメージです。

書式

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 は開発中のコードを実行する際に、「空の処理を仮置きして構文エラーを防ぐ」場合などに用いられます。

【Python】pass文の使い方(何もしない処理)
この記事では、Pythonのpass文でfor, whileループを途中で終了する方法を入門者向けにソースコード付きでまとめました。

for文 + else文

Pythonでは、for 文の後に else をつけることで、ループが“最後まで正常に終わったとき”に実行される処理を書くことができます。

RPGで言えば「エリア内をすべて探索し終えたときに、報告メッセージを出す」ようなイメージです。

書式

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)
} 

正解:B
解説: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]


正解:C
解説:range(3) は 0 から始まり、3未満の整数を順番に生成します。つまり [0, 1, 2] です。

【問題3】文字列のfor文処理(難易度★☆☆☆☆)

次のコードの出力として正しいものを選びなさい。

for c in "魔法":
    print(c)

A. 魔法
B. ['魔', '法']
C. 魔\n法
D. 魔\n法

\n は改行コード


正解:D
解説:文字列はイテラブルなので、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 は改行コード


正解:A
解説:辞書を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 は改行コード


正解:A
解説:enumerate() はインデックスと要素を同時に取り出す関数です。最初のインデックスは0から始まります。

【問題6】for文 + break(難易度★★★☆☆)

次のコードの出力として正しいものを選びなさい。

items = ["剣", "呪われた盾", "弓"]
for item in items:
    if item == "呪われた盾":
        break
    print(item)

A. 剣\n呪われた盾\n弓
B.
C. 剣\n弓
D. 呪われた盾

\n は改行コード


正解:B
解説:break はループを強制終了します。条件に一致した時点でループが止まるため、”剣” のみ表示されます。

【問題7】for文 + continue(難易度★★★☆☆)

次のコードの出力として正しいものを選びなさい。

items = ["剣", "呪われた盾", "弓"]
for item in items:
    if item == "呪われた盾":
        continue
    print(item)

A. 剣\n呪われた盾\n弓
B. 剣\n弓
C. 呪われた盾
D.

\n は改行コード


正解:B
解説: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 は改行コード


正解:A
解説:外側のループでキャラクターを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 は改行コード


正解:B
解説: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 は改行コード


正解:A
解説:not item は空文字 ""None に対してTrueになります。continue によってそれらの要素はスキップされ、"剣""やくそう" のみが表示されます。

関連ページ(もっと学びたい人へ)

Pythonの基礎から応用例まで、以下ページから学ぶことができます。

【Python超入門】基礎から応用例まで幅広く解説
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
Python基礎

コメント