1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】elseの使い方まとめ|if・for・while・tryの意味の違いを整理

Posted at

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 == 3break されたため、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 ... elsetry ... else は他の言語では見かけない形なので、しっかり使い分けられるように練習していきたいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?