[Python] for, while で else句を使ってフラグ管理する

[Python] for, while で else句を使ってフラグ管理する

for, while で else

Python で for, while 文を使用するときに else 句が使用できます。if 文で使用する else 句と違い意味で使用します。ほかの言語だとあまり見ない使い方で、最近まで知らなかったので、使い方をまとめます。

for文の else

for 文で使用する else 句は for 文でのループ宙に break されなかった場合 に実行されるコードブロックを定義できます。for 文でのループ中にフラグでチェックを行い、その結果で何かしらの処理を実行したい場合などに使用できます。

# break されない場合
print('break されない場合')
for val in [1, 2, 3, 4, 5]:
    print(f'val={val}')
else:
    print('else')

# break される場合
print('break される場合')
for val in [1, 2, 3, 4, 5]:
    if val == 3:
        break
    print(f'val={val}')
else:
    print('else')

実行結果は以下のようになります。

break されない場合
val=1
val=2
val=3
val=4
val=5
else
break される場合
val=1
val=2

ループが最後まで実行された場合は else 句が実行され、break でループから抜けた場合には実行されていないことが分かります。

while文の else

while 文の場合も使い方は似ています。ループが最後まで実行された場合(while の条件で抜けた場合)に else 句が実行され、break した場合には実行されません。

# break されない場合
print('break されない場合')
val = 0
while val < 3:
    print(f'val={val}')
    val += 1
else:
    print('else')

# break される場合
print('break される場合')
val = 0
while True:
    print(f'val={val}')
    val += 1
    if val == 3:
        break
else:
    print('else')

簡単な判定処理なら、ループ中にフラグ変数を管理しなくても実装できそうで便利です。
以上。

参考URL

Pythonカテゴリの最新記事