Pythonでは、forループやwhileループにelse節を追加することができます。 この仕組みは他のプログラミング言語にはあまり見られない特徴で、初心者にとっては少し不思議に感じるかもしれません。
しかし、使いこなせるようになると、コードをシンプルかつ読みやすく整理できる便利な機能です。
else節は、ループが正常に最後まで処理されたときに実行される部分です。逆に言えば、途中でbreak文によってループが中断された場合には、else節の処理はスキップされます。 つまり、ループの終了理由によって動作が変わるのです。
ここでは、具体的なコード例を使って詳しく解説していきます。
まずはforループにelse節を追加したシンプルな例を見てみましょう。
numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
else:
print("すべての番号を処理しました。")
このコードでは、リストnumbersに含まれる数字を順番に表示しています。ループがリストの最後まで到達した後、else節が実行され、「すべての番号を処理しました。」というメッセージが表示されます。 ここで重要なのは、ループが中断されることなく最後まで動作したからこそ、else節が実行されたという点です。
実行結果は次のようになります。
1
2
3
4
5
すべての番号を処理しました。
次に、break文を使った場合の挙動を確認しましょう。 以下のコードでは、特定の条件を満たすとループが中断され、その後にelse節が実行されないことを示します。
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
print("3が見つかりました。ループを中断します。")
break
print(num)
else:
print("すべての番号を処理しました。")
ときにbreak文が実行されると、その瞬間にループが終了し、残りの要素は処理されません。そのため、ループの最後に用意していたelse節も実行されずにスキップされます。つまり、「すべての番号を処理しました。」というメッセージは表示されません。
実行結果は次のようになります。
1
2
3が見つかりました。ループを中断します。
else節はwhileループでも同じように使うことができます。次の例を見てください。
count = 0
while count < 5:
print(count)
count += 1
else:
print("カウントが完了しました。")
このプログラムでは、変数countを0から始め、5未満の間だけループを繰り返します。ループの中ではcountの値が表示され、毎回1ずつ増えていきます。そして、countが5になってループ条件を満たさなくなったとき、ループは自然に終了し、その後にelse節が実行されます。その結果、「カウントが完了しました。」というメッセージが最後に表示されます。
実行結果は次のようになります。
0
1
2
3
4
カウントが完了しました。
最後に、whileループでbreak文を使った例を見てみましょう
count = 0
while count < 5:
if count == 3:
print("3に到達しました。ループを中断します。")
break
print(count)
count += 1
else:
print("カウントが完了しました。")
このコードでは、カウントが3になった時点でbreak文が実行されます。 そのため、ループは途中で終了し、else節は実行されません。
出力を確認すると、0から2までは表示され、その後「3に到達しました。ループを中断します。」というメッセージが表示されて終了します。
実行結果は次の通りです。
0
1
2
3に到達しました。ループを中断します。
Pythonにおけるelse節付きループは、ループの終了理由によって処理を分けられる便利な仕組みです。
ループが最後まで正常に処理されたときだけelse節が実行され、breakで中断された場合はスキップされます。 forループとwhileループの両方で利用できるため、検索処理や検証処理のように「条件が見つからなかった場合だけ実行したい処理」があるときに特に役立ちます。
初心者の方は、まずは基本的な例を動かして仕組みを理解し、次にbreakを組み合わせたケースを試してみましょう。 そうすることで、else節の特徴と使いどころが自然と身につき、より柔軟なプログラムを書けるようになります。