今回は、Pythonのfor文にelseを使う方法や、break文との組み合わせについてご紹介します。
Pythonのfor文にelseを組み合わせると、ループが途中でbreakされずに最後まで実行された場合だけ、else内の処理を呼び出せます。
この仕組みによって、「ループを最後まで回しても条件に合致する要素が見つからなかった場合」に別の処理を実行できるようになります。
ここでは、for-else構文の基本やbreak文との組み合わせ方、具体例、そしてよくあるエラーと注意点を解説します。
for文とelseの基本的な仕組み
Pythonのfor文では、配列の各要素などに同じ処理を順番に繰り返し実行します。
このときbreakを使用せずに最後の要素まで処理が行われると、elseブロックが実行されます。
一方、ループ途中でbreakを使って抜けた場合はelseブロックは実行されません。
つまり、for文内で特定の条件を満たしたらループを中断し、それ以外の場合はループ終了後に別の処理を実行する、という流れをシンプルに書けるのがfor-elseの特徴です。
break文と組み合わせた具体例
ここからは、break文と組み合わせたfor-elseの例を2つご紹介します。
リスト内の要素検索
次の例では、リスト内にある値を探します。
もし該当する値が見つかったらbreakでループを終了し、「見つかった」と表示します。
最後まで見つからなければelseブロックが実行され、「見つからなかった」と表示されます。
1 2 3 4 5 6 7 8 9 |
numbers = [1, 3, 5, 7, 9] target = 4 for num in numbers: if num == target: print(f"{target} は見つかりました。") break else: print(f"{target} は見つかりませんでした。") |
4 は見つかりませんでした。
1行も該当がないためこのように出力されます。
素数判定
次の例では、指定した数が素数かどうかを判定します。
2からn-1までの範囲に割り切れる数があればbreakし、「素数ではない」と表示します。
いずれの数でも割り切れなければelseが実行され、「素数です」と表示します。
1 2 3 4 5 6 7 8 9 10 11 |
n = 17 if n > 1: for i in range(2, n): if n % i == 0: print(f"{n} は素数ではありません。") break else: print(f"{n} は素数です。") else: print(f"{n} は素数ではありません。") |
17 は素数です。
よくあるエラーや注意点
続いて、for-else構文でよくあるエラーや注意点を整理します。
- インデントエラー:elseはforやifと同じレベルのインデントにする必要があります。
- コロンの付け忘れ:elseの後にコロンが必要です。例:
for ...: ... else:
- 可読性への配慮:for-else構文は慣れていないエンジニアにとってわかりにくい場合があります。コメントなどで補足すると意図が伝わりやすくなります。
- 他言語には存在しない:for-elseはPython特有の機能です。他の言語と同じ感覚でコードを書くと混乱することがあります。
特に、インデントレベルやコロンの付け忘れはSyntaxError
を引き起こしがちなので注意が必要です。
まとめ
Pythonのfor-else構文は、ループがbreakされなかった場合にのみelseが実行されるのが最大の特徴です。
break文と組み合わせることで、ループ対象を最後まで確認した場合と、途中で条件を満たした場合をシンプルに分岐できます。
よくあるエラーとしてインデントやコロンのミスがあるため、コードを書く際には小まめに動作を確認すると安心です。