pythonでは、forブロックの後にelseブロックを置くことができます。forブロックが最後まで実行されたときにelseブロックが実行されます。途中でbreakした場合にはelseブロックは実行されません。
値を探索する
target = 'godzilla'
for item in ['dog', 'cat', 'Elephant', 'cow', 'Elon Musk']:
if item == target:
# 探索条件を満たした場合の処理
print (f"{target} を見つけた")
break
else:
# 最後まで探索条件が満たされなかった場合の処理
print (f"{target} は見つからない")
条件を満たす要素が見つかるとループをbreakします。ループの最後まで条件を満たす要素がない場合だけelseブロックが実行されます。
多重ループをbreakする
for i in range(5):
for j in range(5):
print(i, j)
if i == 2 and j == 4:
print('内側を break')
break
else:
print('外側をcontinue')
continue
# 内側ループがbreakすると外側もbreakする
print('外側を break')
break
# 実行結果
# 0 0
# 0 1
# 0 2
# 0 3
# 0 4
# 外側をcontinue
# 1 0
# 1 1
# 1 2
# 1 3
# 1 4
# 外側をcontinue
# 2 0
# 2 1
# 2 2
# 内側を break
# 外側を break
ユースケース:素数を見つける
1とそれ自身以外の約数をチェックします。見つかれば素数ではないのでbreakします。見つからなければ素数です。
for i in range(2, number):
print(i)
for i in range(2, number):
if number % i == 0:
print(f"{number} は素数ではありません")
break
else:
print(f"{number} は素数です")
コメント