Python for-else構文

python Python

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} は素数です")

コメント

タイトルとURLをコピーしました