【初心者向け】Pythonの「continue」文とは?ループをスキップして効率的なコードを書く方法

python

プログラミングをしていると、こんな場面に出会うことがあります:

「このデータの時だけ、処理をスキップしたい」
「ループを完全に止める必要はないけれど、一部だけ飛ばしたい」

そんなときに便利なのが、Pythonのcontinue文です。

この記事では、Python初心者の方でも理解できるように:

  • continue文の基本的な仕組み
  • breakとの明確な違い
  • 実際に役立つ使用例
  • よくある間違いと正しい書き方

これらを、具体的なサンプルコードと一緒に詳しく解説していきます。

スポンサーリンク

continue文とは何か?|「今回だけスキップ」する命令

continue文とは、ループ処理の途中で今回の繰り返し処理だけをスキップして、次の繰り返しに進むための命令です。

基本的な動作イメージ

1回目: 処理実行
2回目: continueでスキップ → 処理されない
3回目: 処理実行
4回目: 処理実行

基本的な書き方

for 変数 in データ:
    if 条件:
        continue  # この時点で残りの処理をスキップ
    # 条件を満たさない場合の処理

実際に動かしてみよう|基本例

例1:偶数だけをスキップして奇数のみ表示

print("1から5までの奇数のみ表示:")
for i in range(1, 6):
    if i % 2 == 0:  # 偶数かどうかチェック
        continue    # 偶数なら処理をスキップ
    print(f"奇数: {i}")

print("処理完了")

実行結果:

1から5までの奇数のみ表示:
奇数: 1
奇数: 3
奇数: 5
処理完了

解説:

  • i が 2, 4 の時は continue が実行される
  • print文がスキップされて次のループへ進む
  • i が 1, 3, 5 の時は正常に print文が実行される

while文でのcontinue活用法

例2:特定の数字をスキップしながらカウント

count = 0
print("1から5までカウント(3は飛ばす):")

while count < 5:
    count = count + 1
    
    if count == 3:
        continue  # 3の時だけスキップ
    
    print(f"カウント: {count}")

print("カウント終了")

実行結果:

1から5までカウント(3は飛ばす):
カウント: 1
カウント: 2
カウント: 4
カウント: 5
カウント終了

重要なポイント: while文でcontinueを使う時は、ループの条件を変える処理(ここではcount = count + 1)を continue のに書きましょう。後に書くと無限ループになる危険があります。

breakとcontinueの違いを理解しよう

多くの初心者が混同する、breakcontinueの違いを比較してみましょう。

命令動作結果
continue今回の処理だけスキップループは続行
breakループ全体を終了ループから完全に抜ける

比較例:continueの場合

print("continueの動作:")
for i in range(5):
    if i == 2:
        continue
    print(f"数字: {i}")
print("ループ終了")

結果:

continueの動作:
数字: 0
数字: 1
数字: 3
数字: 4
ループ終了

比較例:breakの場合

print("breakの動作:")
for i in range(5):
    if i == 2:
        break
    print(f"数字: {i}")
print("ループ終了")

結果:

breakの動作:
数字: 0
数字: 1
ループ終了

continue は「今回だけ通り過ぎる」、break は「完全にやめる」

実用的な使用例

例3:空のデータや無効なデータを除外して処理

user_inputs = ["太郎", "", "花子", "   ", "次郎", ""]

print("有効な名前のみ処理:")
for name in user_inputs:
    # 空文字列や空白のみの文字列をスキップ
    if name == "" or name.strip() == "":
        continue
    
    print(f"こんにちは、{name}さん!")

実行結果:

有効な名前のみ処理:
こんにちは、太郎さん!
こんにちは、花子さん!
こんにちは、次郎さん!

例4:特定の条件に合わないデータをスキップ

scores = [85, -5, 92, 150, 78, 0, 95]

print("正常な点数(0-100点)のみ処理:")
for score in scores:
    # 0未満または100超過の点数をスキップ
    if score < 0 or score > 100:
        continue
    
    # 合格判定
    if score >= 80:
        result = "合格"
    else:
        result = "不合格"
    
    print(f"点数: {score}点 → {result}")

実行結果:

正常な点数(0-100点)のみ処理:
点数: 85点 → 合格
点数: 92点 → 合格
点数: 78点 → 不合格
点数: 0点 → 不合格
点数: 95点 → 合格

よくある間違いと対処法

間違い1:continue後のコードが実行されると思う

for i in range(3):
    if i == 1:
        continue
        print("これは実行されません")  # continueの後なので実行されない
    print(f"数字: {i}")

正しい理解: continueが実行されると、それより後のコードは全てスキップされます。

間違い2:while文でのcontinue位置ミス

# 危険な例:無限ループになる可能性
count = 0
while count < 3:
    if count == 1:
        continue  # ここでcontinueすると、count += 1が実行されない
    count += 1    # この行が実行されずに無限ループ
    print(count)

正しい書き方:

count = 0
while count < 3:
    count += 1  # 先に条件を更新
    if count == 2:
        continue
    print(count)

間違い3:ループの外でcontinueを使う

# これはエラーになります
if True:
    continue  # ループの中でないとcontinueは使えない

エラーメッセージ: 'continue' not properly in loop

応用テクニック:複数条件でのcontinue

例5:複数の条件でスキップする場合

products = [
    {"name": "りんご", "price": 100, "stock": 5},
    {"name": "みかん", "price": 0, "stock": 10},      # 価格が0
    {"name": "バナナ", "price": 150, "stock": 0},     # 在庫が0
    {"name": "ぶどう", "price": 300, "stock": 3},
]

print("販売可能な商品:")
for product in products:
    # 価格が0または在庫が0の商品をスキップ
    if product["price"] <= 0 or product["stock"] <= 0:
        continue
    
    print(f"{product['name']}: {product['price']}円(在庫{product['stock']}個)")

実行結果:

販売可能な商品:
りんご: 100円(在庫5個)
ぶどう: 300円(在庫3個)

よくある質問(FAQ)

Q1:continueは必ずif文と一緒に使うの?

A1: 基本的にはそうです。
「特定の条件の時だけスキップしたい」という場面で使うため、if文との組み合わせが一般的です。

Q2:二重ループ(ネストしたループ)でcontinueを使うとどうなる?

A2: continueは最も内側のループにのみ影響します。

for i in range(3):
    print(f"外側ループ: {i}")
    for j in range(3):
        if j == 1:
            continue  # 内側のループのみスキップ
        print(f"  内側ループ: {j}")

Q3:for-else文でcontinueを使うとelseは実行される?

A3: はい、実行されます。continueはループを中断しないため、else文は正常に実行されます。

for i in range(3):
    if i == 1:
        continue
    print(i)
else:
    print("ループが正常に完了しました")  # これは実行される

まとめ

Pythonのcontinue文は、ループ処理をより効率的で読みやすくするための重要な機能です。

ポイント:

  • continueは「今回だけスキップ」、breakは「完全に終了」
  • 不要なデータや無効なデータの除外に便利
  • if文と組み合わせて条件付きでスキップ
  • while文では条件変更処理の位置に注意
  • ネストしたループでは最も内側のループのみに影響

コメント

タイトルとURLをコピーしました