Python|for-else構文の基本と使い方

1. はじめに

Pythonには、少し変わった構文としてfor-else構文があります。通常のfor文elseブロックが続くこの構文は、初心者にとっては馴染みが薄く、「一体いつ使うの?」と感じるかもしれません。

しかし、特定の条件を満たすループの有無を簡潔に判断したい場面では、このfor-else構文が非常に役立ちます。
本記事では、「Python|for-else構文の基本と使い方」というテーマで、その概要から具体的な使用例、注意点までを丁寧に解説します。

 

2. Pythonのfor-else構文とは?基本の書き方と動作

for-else構文の基本構文

まず、for-else構文の基本的な書き方を見てみましょう。

for 要素 in シーケンス:
    # 繰り返し処理
    if 条件:
        break  # 条件を満たしたらループを終了
else:
    # breakされなかったときに実行される

この構文の特徴は、ループが「正常終了したときだけ」elseが実行されるという点です。ループ中にbreakが実行されると、else部分はスキップされます。

 

簡単なコード例

例えば、リスト内に特定の数字があるかどうかを探す処理を考えてみましょう。

numbers = [1, 3, 5, 7, 9]

for num in numbers:
    if num == 4:
        print("4が見つかりました!")
        break
else:
    print("4はリストに存在しません。")

出力結果:

4はリストに存在しません。

このように、forループ内でbreak</codeが実行されなかった場合に、elseブロックの処理が実行されます。

3. よくある使い方・応用例

検索処理とfor-elseの組み合わせ

リストや文字列の中から特定の値や条件を満たす要素を探す際に、for-elseはとても便利です。

応用例:素数判定

ある整数が素数かどうかを判定するには、割り切れる数があるかをループで調べます。見つかったらbreakし、見つからなければelseで「素数」と判断します。

n = 17

if n < 2:
    print("2未満は素数ではありません")
else:
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            print(f"{n} は素数ではありません")
            break
    else:
        print(f"{n} は素数です")

出力結果:

17 は素数です

このように、for-else構文を使えば、検索・チェック系の処理をスッキリ書けます。

文字列検索にも活用できる

以下のように、文字列の中に特定の文字が含まれているかどうかを調べる際にも使えます。

text = "Hello, Python!"

for ch in text:
    if ch == "@":
        print("不正な文字が含まれています。")
        break
else:
    print("不正な文字は見つかりませんでした。")

出力結果:

不正な文字は見つかりませんでした。

 

4. 注意点・エラー対策

for-elseの挙動を誤解しやすい

初心者がよく誤解するのが、「elseforの条件に失敗したときに実行される」と思ってしまう点です。しかし実際は、
breakしなかった場合に実行される」というのが正しい挙動です。

インデントミスに注意

forelseのインデントが一致していないと、構文エラーになります。必ず以下のように、elseforと同じインデントレベルにしてください。

for item in items:
    if 条件:
        break
else:  # ←このインデントに注意
    処理

elseを付け忘れると普通のfor文になる

当然ですが、elseがなければfor-else構文にはなりません。実行上はエラーになりませんが、意図した挙動になっていないことに気づきにくいので注意しましょう。

 

5. まとめ

  • for-else構文は、「breakしなかった場合」にelseの処理が実行される。
  • リストや文字列からの検索や、条件の成立チェックに使える。
  • インデントや挙動の誤解に注意する。

この構文は、最初はやや違和感がありますが、慣れると検索系処理をスマートに書ける非常に強力な構文です。実務では「特定条件の検出・未検出処理」において重宝されます。
Pythonのコードをより読みやすく、洗練されたものにしたい人は、ぜひ積極的に使ってみてください。

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