ループの else 節で素数を探す
次のコードを実行したときの出力として、正しいものを1つ選べ。
for n in range(2, 6):
for x in range(2, n):
if n % x == 0:
break
else:
print(n, end=" ")
- A
4 - B
2 3 4 5 - C
3 5 - D
2 3 5
正解と解説を見る
正解:D
else 節は、break されずにループが終わったときに実行される。素数探しがその典型例。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `for n in range(2, 6):` | n = 2 |
| 2 | `for x in range(2, n):` | n = 2 |
| 3 | `print(n, end=" ")` | n = 2 |
| 4 | `for n in range(2, 6):` | n = 3 |
| 5 | `for x in range(2, n):` | x = 2, n = 3 |
| 6 | `if n % x == 0:` | n = 3, x = 2 |
| 7 | `for x in range(2, n):` | x = 2, n = 3 |
| 8 | `print(n, end=" ")` | n = 3 |
| 9 | `for n in range(2, 6):` | n = 4 |
| 10 | `for x in range(2, n):` | x = 2, n = 4 |
| 11 | `if n % x == 0:` | n = 4, x = 2 |
| 12 | `break` | — |
| 13 | `for n in range(2, 6):` | n = 5 |
| 14 | `for x in range(2, n):` | x = 2, n = 5 |
| 15 | `if n % x == 0:` | n = 5, x = 2 |
| 16 | `for x in range(2, n):` | x = 3, n = 5 |
| 17 | `if n % x == 0:` | n = 5, x = 3 |
| 18 | `for x in range(2, n):` | x = 4, n = 5 |
| 19 | `if n % x == 0:` | n = 5, x = 4 |
| 20 | `for x in range(2, n):` | x = 4, n = 5 |
| 21 | `print(n, end=" ")` | n = 5 |
| 22 | `for n in range(2, 6):` | n = 5 |
| 分岐 | `else:` | 実行される |
| 結果 | 実際の出力 | 2 3 5 |
- A
誤り。4 は 2 で割り切れるので、
breakされ、出力されない。 - B
誤り。4 は素数ではない。
- C
誤り。2 は内側のループが空なので、
else節が実行される。 - D
正しい。内側のループが
breakされなかったときにelse節が実行され、素数が出力される。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。