【Python】while文でcontinueを使う

この記事では、while文とcontinue文を組み合わせて、効率的にループ処理を行う方法をわかりやすく解説します。

基本的な使い方から実践的な例まで、初心者でも理解しやすいようにサンプルコードとともに説明しますので、ぜひ参考にしてください。

目次から探す

while文でcontinueを使う

Pythonのwhile文とcontinue文を組み合わせることで、特定の条件を満たす場合にループの残りの処理をスキップし、次の反復に進むことができます。

この記事では、while文とcontinue文の基本的な使い方から、実践的な例までを解説します。

while文とcontinue文の組み合わせ

基本的な例

まず、while文とcontinue文の基本的な使い方を見てみましょう。

以下の例では、1から10までの数字を順に表示しますが、5のときだけ表示をスキップします。

i = 1
while i <= 10:
    if i == 5:
        i += 1
        continue
    print(i)
    i += 1

このコードの実行結果は以下の通りです。

1
2
3
4
6
7
8
9
10

このように、iが5のときにcontinue文が実行され、print文がスキップされます。

条件に応じたスキップ処理

次に、条件に応じてスキップ処理を行う例を見てみましょう。

以下のコードでは、1から20までの数字のうち、偶数だけを表示します。

i = 1
while i <= 20:
    if i % 2 != 0:
        i += 1
        continue
    print(i)
    i += 1

このコードの実行結果は以下の通りです。

2
4
6
8
10
12
14
16
18
20

このように、iが奇数のときにcontinue文が実行され、print文がスキップされます。

continue文を使った実践的な例

特定の条件をスキップするループ

実際のプログラムでは、特定の条件を満たす場合に処理をスキップすることがよくあります。

以下の例では、リスト内の負の数をスキップして、正の数だけを表示します。

numbers = [1, -2, 3, -4, 5, -6]
i = 0
while i < len(numbers):
    if numbers[i] < 0:
        i += 1
        continue
    print(numbers[i])
    i += 1

このコードの実行結果は以下の通りです。

1
3
5

入力値のバリデーション

ユーザーからの入力を受け取る際に、無効な入力をスキップすることもできます。

以下の例では、ユーザーに数値を入力させ、負の数が入力された場合は再度入力を促します。

while True:
    user_input = input("正の数を入力してください: ")
    if not user_input.isdigit() or int(user_input) < 0:
        print("無効な入力です。再度入力してください。")
        continue
    print(f"入力された数値は: {user_input}")
    break

このコードを実行すると、ユーザーが負の数や数値以外を入力した場合に再度入力を促します。

データ処理の効率化

大量のデータを処理する際に、特定の条件を満たすデータをスキップすることで、処理の効率を上げることができます。

以下の例では、リスト内のデータを処理し、特定の条件を満たすデータをスキップします。

data = [10, 20, 30, 40, 50, 60]
i = 0
while i < len(data):
    if data[i] % 20 == 0:
        i += 1
        continue
    print(f"処理中のデータ: {data[i]}")
    i += 1

このコードの実行結果は以下の通りです。

処理中のデータ: 10
処理中のデータ: 30
処理中のデータ: 50

このように、data[i]が20の倍数である場合にcontinue文が実行され、処理がスキップされます。

以上のように、while文とcontinue文を組み合わせることで、特定の条件を満たす場合に処理をスキップし、効率的なプログラムを作成することができます。

注意点とベストプラクティス

無限ループに注意

while文とcontinue文を組み合わせる際に最も注意すべき点は、無限ループに陥らないようにすることです。

無限ループはプログラムが終了しない状態を指し、意図しない動作を引き起こす可能性があります。

例えば、以下のコードは無限ループに陥る例です:

i = 0
while i < 10:
    if i % 2 == 0:
        continue
    print(i)
    i += 1

このコードでは、iが偶数のときにcontinue文が実行され、iの値が更新されないため、iが0のまま無限ループに陥ります。

これを防ぐためには、continue文の前にiの値を更新する必要があります。

修正したコードは以下の通りです:

i = 0
while i < 10:
    if i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1

このように、continue文を使用する際には、ループの条件が適切に更新されるように注意しましょう。

コードの可読性を保つ

continue文を使うことで、特定の条件をスキップする処理が簡単に実現できますが、過度に使用するとコードの可読性が低下する可能性があります。

コードの可読性を保つためには、以下の点に注意しましょう。

  1. 条件を明確にするcontinue文を使用する条件を明確にし、コメントを追加して意図を説明する。
  2. ネストを避ける:複雑な条件分岐やネストを避け、シンプルな構造を保つ。

例えば、以下のコードは可読性が低い例です:

i = 0
while i < 10:
    if i % 2 == 0:
        if i % 3 == 0:
            continue
    print(i)
    i += 1

このコードを改善するためには、条件を明確にし、コメントを追加することが有効です:

i = 0
while i < 10:
    # iが2の倍数かつ3の倍数の場合はスキップ
    if i % 2 == 0 and i % 3 == 0:
        i += 1
        continue
    print(i)
    i += 1

適切なコメントの追加

continue文を使用する際には、適切なコメントを追加してコードの意図を明確にすることが重要です。

コメントを追加することで、他の開発者や将来の自分がコードを理解しやすくなります。

例えば、以下のコードにはコメントがなく、意図が分かりにくいです:

i = 0
while i < 10:
    if i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1

このコードにコメントを追加すると、意図が明確になります:

i = 0
while i < 10:
    # iが偶数の場合はスキップ
    if i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1

このように、continue文を使用する際には、適切なコメントを追加してコードの意図を明確にすることが重要です。

これにより、コードの可読性が向上し、保守性も高まります。

目次から探す