Pythonのcontinue文の使い方徹底解説|ループ制御をマスターしよう

1. continue文の基本理解

continue文は、Pythonのループ構造内で特定の条件を満たす際に、そのループの現在の反復をスキップして次の反復に進むために使用されます。これは、例えば、特定の要素を処理から除外したい場合に便利です。

1.1 continueの基本構文

continue文は、forループまたはwhileループの中で使われます。基本的な構文は以下のとおりです。

for i in range(5):
    if i == 2:
        continue
    print(i)

このコードでは、iが2のときにcontinueが実行され、print文はスキップされます。そのため、出力は0, 1, 3, 4となります。

2. forループでのcontinueの使い方

forループは、繰り返し処理を行う際によく使われます。この中でcontinueを使用すると、特定の条件でその反復の残りの処理をスキップすることができます。

2.1 基本的なforループでの例

以下のコードでは、リスト内の数値を順に処理し、特定の条件に合致する場合にその処理をスキップします。

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        continue
    print(num)

このコードでは、偶数の数値がcontinueによってスキップされるため、出力は1, 3, 5となります。

2.2 ネストされたforループでのcontinue

ネストされたループ内でcontinueを使う場合、continueは最も内側のループにのみ影響します。例えば:

for i in range(3):
    for j in range(3):
        if j == 1:
            continue
        print(i, j)

このコードでは、内側のループでjが1の場合に処理をスキップし、print(i, j)の出力は(0, 0), (0, 2), (1, 0), (1, 2), (2, 0), (2, 2)となります。

3. whileループでのcontinueの使い方

whileループでも同様に、continueを使って現在の反復をスキップし、次の反復に進むことができます。

3.1 基本的なwhileループでの例

以下のコードは、ユーザーから数値を入力させ、特定の条件でcontinueを使って処理をスキップします。

counter = 0
while counter < 5:
    counter += 1
    if counter == 3:
        continue
    print(counter)

このコードでは、counterが3のときにcontinueが実行され、print文はスキップされます。そのため、出力は1, 2, 4, 5となります。

3.2 whileループでの入力検証

whileループでユーザー入力を検証する際にもcontinueが役立ちます。例えば、空の入力をスキップするためにcontinueを使うことができます:

while True:
    text = input("Enter a number (or 'exit' to quit): ")
    if text == 'exit':
        break
    if text == '':
        print("Empty input, please try again.")
        continue
    print(f"You entered: {text}")

このコードでは、ユーザーが空の入力をした場合にcontinueで処理をスキップし、再度入力を促します。

4. continueelseの組み合わせ

Pythonでは、forループとwhileループにelseブロックを組み合わせることができます。このelseブロックは、continueが実行された場合にも適用されるため、より複雑なフロー制御を実現できます。

4.1 elseブロックでの例

以下の例では、elseブロックとcontinueを組み合わせて、ループが最後まで実行された場合の処理を行います。

for i in range(3):
    for j in range(3):
        if j == 1:
            continue
        print(i, j)
    else:
        print("Inner loop finished.")

このコードでは、内側のループがcontinueによって途中でスキップされたとしても、elseブロックの”Inner loop finished.”が表示されます。

5. continuebreakの違い

continuebreakはどちらもループの流れを制御しますが、用途が異なります。

5.1 continueの動作

continueは現在の反復をスキップし、次の反復に進みます。ループ全体を終了することはありません。

5.2 breakの動作

一方、breakはループ全体を終了し、ループの外に出ます。以下の例で違いを見てみましょう:

for i in range(5):
    if i == 3:
        break
    print(i)

このコードでは、iが3のときにbreakが実行され、ループ全体が終了します。出力は0, 1, 2となります。

5.3 どちらを使うべきか

continueは特定の条件で処理をスキップするのに使い、breakは特定の条件でループを完全に終了する場合に使います。用途に応じて使い分けましょう。

6. 実践的な応用

continue文は、実際のプログラミングで効率的なコードを書いたり、特定の状況を避けるために使用されます。

6.1 データフィルタリング

例えば、データセットから特定の値を除外する際にcontinueを使うことができます。

data = [1, -1, 2, -2, 3, -3]
for value in data:
    if value < 0:
        continue
    print(value)

このコードでは、負の値がスキップされ、出力は1, 2, 3となります。

7. よくある間違いとトラブルシューティング

continueを使用する際によくある間違いとその解決策について解説します。

7.1 インデントミス

continueを使う際の最も一般的なミスはインデントです。continueが意図しない場所にインデントされていると、予期しない動作を引き起こす可能性があります。

7.2 無限ループの危険性

whileループでcontinueを使う場合、ループの進行を確実に管理する必要があります。例えば、カウンタの更新をcontinueの前に行わないと無限ループになる可能性があります。

counter = 0
while counter < 5:
    if counter == 3:
        continue  # 無限ループになる
    counter += 1
    print(counter)

このコードでは、counterの更新がcontinueの後に行われないため、無限ループになります。