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

continue文 - 次のループへスキップ

目次

このレッスンで学ぶこと

  • continue文とは何か
  • continue文の使い方
  • breakとcontinueの違い
  • continue文の実用例

continue文とは

continue文は、ループ内の残りの処理をスキップして、次の繰り返しに進む制御構文です。特定の条件を満たした場合だけ処理をスキップしたい場合に使用されます。breakとは異なり、ループ自体は継続されます。

continue文の基本構造

Python
for 変数 in コレクション:
    if スキップ条件:
        continue  # 残りの処理をスキップ
    処理

while 条件式:
    if スキップ条件:
        continue  # 残りの処理をスキップ
    処理

continue文の構成要素

要素説明
continueスキップするキーワード必須
配置ループの中(if文の中)通常はif文の中で使用
効果残りの処理をスキップcontinueの後は実行されない
ループ継続ループ自体は続く次の繰り返しに進む

continue文の特徴

  • ループ内の残りの処理だけをスキップ(ループは継続)
  • 複数の条件チェックでネストを減らせる
  • while文では無限ループのリスクに注意
  • 特定条件を除外する処理に便利

簡単な例

Python
# 奇数をスキップして偶数だけ表示
for i in range(1, 6):
    if i % 2 != 0:
        continue  # 奇数はスキップ
    print(i)

# 実行結果:
# 2
# 4

# 負の数をスキップして正の数だけ処理
numbers = [10, -5, 20, 0, 15]
for num in numbers:
    if num <= 0:
        continue  # 0以下はスキップ
    print(f"正の数: {num}")

なぜcontinue文が必要なのか?

ループ処理で、特定の条件のときだけ処理をスキップしたい場合があります。

Python
# 偶数だけ表示(奇数はスキップ)
for i in range(1, 11):
    if i % 2 != 0:
        continue  # 奇数のときは残りの処理をスキップ
    print(f"{i}は偶数です")

実行結果:

2は偶数です
4は偶数です
6は偶数です
8は偶数です
10は偶数です

continue文を使うことで、条件に合わない場合だけスキップできます。

💡 豆知識: continue文は英語で「続ける」という意味です。「今回の処理は飛ばして、次の繰り返しを続ける」という動作を表しています。


continue文の基本

機能: ループの残りの処理をスキップして、次の繰り返しに進みます。

書き方:

Python
for item in items:
    if スキップ条件:
        continue  # 残りの処理をスキップ
    処理

while 条件:
    if スキップ条件:
        continue  # 残りの処理をスキップ
    処理

用途: 特定条件の除外、無効なデータのスキップ、エラー回避

注意点:

  • continue以降の処理は実行されない
  • ループ自体は続く(breakとは違う)
  • while文では無限ループに注意
Python
# 基本的な使い方
for i in range(5):
    if i == 2:
        continue  # i==2のときスキップ
    print(i)

実行結果:

0
1
3
4

breakとcontinueの違い

比較

Python
print("=== break ===")
for i in range(5):
    if i == 2:
        break  # ループを抜ける
    print(i)

print("\n=== continue ===")
for i in range(5):
    if i == 2:
        continue  # 2だけスキップ
    print(i)

実行結果:

=== break ===
0
1

=== continue ===
0
1
3
4

違い:

  • break: ループを完全に終了
  • continue: 今回だけスキップして次へ

for文でのcontinue

例1: 奇数をスキップ

Python
# 1から10までの偶数だけ表示
for i in range(1, 11):
    if i % 2 != 0:
        continue  # 奇数はスキップ
    print(i)

実行結果:

2
4
6
8
10

例2: 特定の値を除外

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

print("バナナ以外の果物:")
for fruit in fruits:
    if fruit == "バナナ":
        continue  # バナナはスキップ
    print(f"- {fruit}")

実行結果:

バナナ以外の果物:
- りんご
- オレンジ
- ぶどう

例3: 条件に合うもののみ処理

Python
scores = [85, 45, 92, 38, 76, 55, 90]

print("合格者(60点以上):")
for score in scores:
    if score < 60:
        continue  # 60点未満はスキップ
    print(f"{score}点")

実行結果:

合格者(60点以上):
85点
92点
76点
90点

while文でのcontinue

例1: 特定条件のスキップ

機能: while文でcontinueを使う場合、カウンタの更新位置に注意が必要です。

書き方:

Python
while 条件:
    カウンタ更新  # continueより前に配置
    if スキップ条件:
        continue
    処理

用途: 条件付きスキップ、エラー時の次処理

注意点: カウンタ更新をcontinueより前に書く(無限ループ防止)

Python
count = 0

while count < 10:
    count += 1  # 重要: continueより前で更新

    if count % 2 == 0:
        continue  # 偶数はスキップ

    print(count)

実行結果:

1
3
5
7
9

例2: 無効な入力のスキップ

Python
# 正の数だけ処理(0や負の数はスキップ)
numbers = [10, -5, 20, 0, 15, -3, 8]
total = 0

for number in numbers:
    if number <= 0:
        continue  # 0以下はスキップ
    total += number
    print(f"{number}を加算: 合計 = {total}")

print(f"\n最終合計: {total}")

実行結果:

10を加算: 合計 = 10
20を加算: 合計 = 30
15を加算: 合計 = 45
8を加算: 合計 = 53

最終合計: 53

具体例

例1: ファイルフィルタリング

Python
files = ["image1.png", "document.txt", "photo.jpg", "data.csv", "picture.png"]

print("画像ファイル(.png):")
for file in files:
    if not file.endswith(".png"):
        continue  # .png以外はスキップ
    print(f"- {file}")

実行結果:

画像ファイル(.png):
- image1.png
- picture.png

例2: 成績処理

Python
students = [
    {"name": "田中", "score": 85},
    {"name": "佐藤", "score": 45},
    {"name": "鈴木", "score": 92},
    {"name": "高橋", "score": 38},
    {"name": "伊藤", "score": 76}
]

print("=== 合格者リスト(60点以上)===")
for student in students:
    if student["score"] < 60:
        continue  # 不合格者はスキップ

    print(f"{student['name']}: {student['score']}点")

実行結果:

=== 合格者リスト(60点以上)===
田中: 85点
鈴木: 92点
伊藤: 76点

例3: データクリーニング

Python
# 空文字列や空白だけの要素をスキップ
data = ["Python", "", "  ", "Java", "   ", "C++", ""]

print("有効なデータ:")
for item in data:
    if not item.strip():  # 空または空白のみ
        continue
    print(f"- {item}")

実行結果:

有効なデータ:
- Python
- Java
- C++

例4: 数値の検証

Python
# 範囲外の値をスキップ
temperatures = [22, 45, 18, -5, 30, 100, 25, -10, 28]

print("有効な気温(0〜40度):")
for temp in temperatures:
    if temp < 0 or temp > 40:
        continue  # 範囲外はスキップ
    print(f"{temp}度")

実行結果:

有効な気温(0〜40度):
22度
18度
30度
25度
28度

例5: 割り算のゼロ除外

Python
numbers = [10, 5, 0, 20, 0, 8, 15]
divisor = 100

print("=== 割り算結果 ===")
for number in numbers:
    if number == 0:
        print(f"{number}: スキップ(0では割れません)")
        continue

    result = divisor / number
    print(f"{divisor} ÷ {number} = {result:.2f}")

実行結果:

=== 割り算結果 ===
100 ÷ 10 = 10.00
100 ÷ 5 = 20.00
0: スキップ(0では割れません)
100 ÷ 20 = 5.00
0: スキップ(0では割れません)
100 ÷ 8 = 12.50
100 ÷ 15 = 6.67

例6: 複数条件のスキップ

Python
# 3の倍数と5の倍数をスキップ
print("3の倍数と5の倍数以外:")
for i in range(1, 21):
    if i % 3 == 0:
        continue  # 3の倍数はスキップ
    if i % 5 == 0:
        continue  # 5の倍数はスキップ
    print(i, end=" ")

print()

実行結果:

3の倍数と5の倍数以外:
1 2 4 7 8 11 13 14 16 17 19

continueの応用パターン

パターン1: 早期スキップ

Python
# 条件チェックを先に行う
users = [
    {"name": "太郎", "age": 25, "active": True},
    {"name": "花子", "age": 17, "active": True},
    {"name": "次郎", "age": 30, "active": False},
    {"name": "三郎", "age": 22, "active": True}
]

print("=== アクティブな成人ユーザー ===")
for user in users:
    if not user["active"]:
        continue  # 非アクティブはスキップ
    if user["age"] < 18:
        continue  # 未成年はスキップ

    print(f"{user['name']}{user['age']}歳)")

実行結果:

=== アクティブな成人ユーザー ===
太郎(25歳)
三郎(22歳)

パターン2: ネストの削減

Python
# continueを使わない場合(ネストが深い)
for i in range(5):
    if i % 2 == 0:
        if i > 0:
            print(f"{i}は正の偶数です")

# continueを使う場合(フラット)
for i in range(5):
    if i % 2 != 0:
        continue  # 奇数はスキップ
    if i == 0:
        continue  # 0もスキップ
    print(f"{i}は正の偶数です")

実行結果:

2は正の偶数です
4は正の偶数です

よくある間違い

間違い1: while文での無限ループ

Python
# 危険: カウンタ更新がcontinueの後
count = 0
while count < 5:
    if count == 2:
        continue  # count += 1 がスキップされる
    print(count)
    count += 1  # ここに到達しない

# 正しい: カウンタ更新を先に
count = 0
while count < 5:
    count += 1  # continueより前
    if count == 2:
        continue
    print(count)

間違い2: continueの位置

Python
# continueの後の処理は実行されない
for i in range(5):
    if i == 2:
        continue
        print("これは実行されない")  # 到達不可能
    print(i)

# 正しい
for i in range(5):
    if i == 2:
        continue  # ここでスキップ
    print(i)  # i==2以外で実行される

間違い3: 過度な使用

Python
# 読みにくい例
for i in range(10):
    if i % 2 == 0:
        continue
    if i % 3 == 0:
        continue
    if i > 7:
        continue
    print(i)

# よりわかりやすい
for i in range(10):
    if i % 2 != 0 and i % 3 != 0 and i <= 7:
        print(i)

間違い4: breakとの混同

Python
# continueはループを続ける
for i in range(5):
    if i == 2:
        continue  # 2だけスキップ
    print(i)
# 出力: 0, 1, 3, 4

# breakはループを終了
for i in range(5):
    if i == 2:
        break  # 2で終了
    print(i)
# 出力: 0, 1

間違い5: 不要なcontinue

Python
# 不要な例
for i in range(5):
    if i % 2 == 0:
        print(f"{i}は偶数")
    else:
        continue  # これは不要

# シンプルに
for i in range(5):
    if i % 2 == 0:
        print(f"{i}は偶数")

練習問題

問題1(基礎)⭐☆☆

1から10までの数値のうち、5の倍数以外を表示してください。

💡 ヒント

5の倍数のときcontinueでスキップします。

✅ 解答例
Python
for i in range(1, 11):
    if i % 5 == 0:
        continue  # 5の倍数はスキップ
    print(i)

実行結果:

1
2
3
4
6
7
8
9

解説: 5と10(5の倍数)がスキップされています。


問題2(基礎)⭐☆☆

リスト [1, -2, 3, -4, 5, -6] から正の数だけを表示してください。

💡 ヒント

負の数のときcontinueでスキップします。

✅ 解答例
Python
numbers = [1, -2, 3, -4, 5, -6]

for number in numbers:
    if number < 0:
        continue  # 負の数はスキップ
    print(number)

実行結果:

1
3
5

解説: 負の数(-2, -4, -6)がスキップされ、正の数だけ表示されています。


問題3(応用)⭐⭐☆

1から20までの数値のうち、3の倍数でも5の倍数でもない数を表示してください。

💡 ヒント

3の倍数と5の倍数の両方でcontinueします。

✅ 解答例
Python
for i in range(1, 21):
    if i % 3 == 0:
        continue  # 3の倍数はスキップ
    if i % 5 == 0:
        continue  # 5の倍数はスキップ
    print(i, end=" ")

print()

実行結果:

1 2 4 7 8 11 13 14 16 17 19

解説: 3の倍数(3,6,9,12,15,18)と5の倍数(5,10,15,20)がスキップされています。


まとめ

このレッスンでは、continue文で特定条件の処理をスキップする方法を学びました。

  • continue文は、現在の周回の残り処理を飛ばして次の反復へ進みます。
  • 除外条件を先に書くことで、ループ本体を読みやすく整理できます。
  • breakとの違い(ループ継続か終了か)を使い分けられるようになりました。
  • while文で使う場合は、更新処理の位置に注意する必要があります。
  • スキップ条件を明確化すると、意図しない抜け漏れを防げます。