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の挙動を誤解しやすい
初心者がよく誤解するのが、「else
がfor
の条件に失敗したときに実行される」と思ってしまう点です。しかし実際は、
breakしなかった場合に実行される
」というのが正しい挙動です。
インデントミスに注意
for
とelse
のインデントが一致していないと、構文エラーになります。必ず以下のように、else
はfor
と同じインデントレベルにしてください。
for item in items:
if 条件:
break
else: # ←このインデントに注意
処理
elseを付け忘れると普通のfor文になる
当然ですが、else
がなければfor-else
構文にはなりません。実行上はエラーになりませんが、意図した挙動になっていないことに気づきにくいので注意しましょう。
5. まとめ
for-else構文
は、「breakしなかった場合」にelse
の処理が実行される。- リストや文字列からの検索や、条件の成立チェックに使える。
- インデントや挙動の誤解に注意する。
この構文は、最初はやや違和感がありますが、慣れると検索系処理をスマートに書ける非常に強力な構文です。実務では「特定条件の検出・未検出処理」において重宝されます。
Pythonのコードをより読みやすく、洗練されたものにしたい人は、ぜひ積極的に使ってみてください。