for … else

whileループと同様に、forループにもelseブロックを付けることができます。これは、forループがbreak文に遭遇せずに正常に完了したときに実行されます。for…elseの構文は、while…elseの構文と非常に似ています。
次のプログラムで、与えられた数が素数かどうかをチェックしてみましょう。数が1より大きく、1とその数自身以外の数で割り切れない場合、その数は素数です。
# 数が素数かどうかをチェックするプログラム
num = int(input('Enter a number: '))
for i in range(2, num):
    if num % i == 0:
        print(f'{num} is not a prime number')
        break
else:
    print(f'{num} is a prime number')
このプログラムは、[2, num)の範囲内のすべての数をチェックして、それがnumの因数であるかどうかを確認します。そのような数が見つかった場合、{num} is not a prime numberと出力し、ループを終了します。break文が実行されたため、elseブロック内のコードは実行されません。しかし、範囲内のどの数もnumの因数でない場合、elseブロック内のコードが実行され、プログラムは{num} is a prime numberと出力します。

チャレンジ

入力の最初の行にはnが含まれ、続くn行に整数が与えられます。あなたのタスクは、リスト内の最初の偶数を見つけたらThe first even number in the list is {num}と出力し、入力された数に偶数がない場合はThere is no even number in the listと出力することです!このチャレンジを解くために、elseブロックを持つforループを使ってみましょう。
入力
出力
5 -1 3 4 -3 6
The first even number in the list is 4
4 1 3 -7 17
There is no even number in the list

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue