Pythonでは else
がさまざまな構文で使われますが、それぞれの意味が違っていて混乱しやすいと感じました。
自分の学習のために、else
の使い方と意味の違いを整理してみました。
1. if ... else
(基本の条件分岐)
まずは最も基本的な条件分岐です。これは他の言語と同じような感覚で使えます。
x = 10
if x > 5:
print("5より大きい")
else:
print("5以下")
補足:1行で書ける if ... else
条件に応じて値を1行で代入したい場合、次のような書き方ができます。
x = 10
result = "大きい" if x > 5 else "小さい"
print(result) # 出力: 大きい
このような書き方は「三項演算子」と呼ばれることもあります。
2. for ... else
(ループが最後まで実行されたときの処理)
for
文に else
をつけると、「break
されずに最後までループが終わったとき」に else
節が実行されます。
for num in [1, 2, 3, 4, 5]:
if num == 3:
break
else:
print("ループを最後まで回りました") # これは実行されません
num == 3
で break
されたため、else
は実行されません。
逆に break
されなかった場合は else
が実行されます。
for num in [1, 2, 3]:
print(num)
else:
print("ループを最後まで回りました") # 実行されます
3. while ... else
(ループが最後まで実行されたときの処理)
while
文にも else
を使うことができます。意味は for
と同じで、break
されずにループが終わった場合に else
が実行されます。
i = 0
while i < 3:
print(i)
i += 1
else:
print("正常終了") # 実行されます
ただし、break
されると else
は実行されません。
i = 0
while i < 3:
if i == 1:
break
print(i)
i += 1
else:
print("正常終了") # 実行されません
4. try ... else
(エラーが出なかったときの処理)
try
文の中でエラーが発生しなかった場合に、else
が実行されます。
try:
result = 10 / 2
except ZeroDivisionError:
print("ゼロ除算エラーが発生しました")
else:
print("正常に計算できました:", result)
エラーが起きると else
は実行されません。
try:
result = 10 / 0
except ZeroDivisionError:
print("ゼロ除算エラーが発生しました")
else:
print("正常に計算できました:", result) # 実行されません
※補足:finally
は例外の有無に関係なく常に実行されるブロックで、else
とは役割が異なります。
5. else
の使い方まとめ表
文法 |
else の意味 |
よくある用途 |
---|---|---|
if ... else |
条件により処理を分ける | 基本の分岐 |
for ... else |
break されなければ実行される |
ループで「見つからなかった」時など |
while ... else |
break されなければ実行される |
ループ抜けのチェック |
try ... else |
例外がなければ実行される | 正常処理後の追加処理 |
覚え方のコツ(else
がいつ実行されるか)
構文ごとに else
の意味が違うので、自分なりに以下のように覚えると整理しやすいと思いました。
構文 |
else が実行される条件 |
覚え方のコツ |
---|---|---|
for ... else |
break されなかったら |
「breakしなかったら」 |
while ... else |
break されなかったら |
「breakしなかったら」 |
try ... else |
エラーが出なかったら | 「エラーが出なかったら」 |
おわりに
こうして整理してみると、Python の else
は構文ごとに意味が違っていてややこしいと感じました。
特に for ... else
や try ... else
は他の言語では見かけない形なので、しっかり使い分けられるように練習していきたいです。