ループの else 節
次のコードを実行したときの出力として、正しいものを1つ選べ。
for n in range(2, 8):
for x in range(2, n):
if n % x == 0:
break
else:
print(n, end=" ")
- A
2 3 5 7 - B
4 6 - C
2 3 4 5 6 7 - D
何も出力されない。
正解と解説を見る
正解:A
for 文の else 節は、break せずにループが終わったときに実行される。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `for n in range(2, 8):` | n = 2 |
| 2 | `for x in range(2, n):` | n = 2 |
| 3 | `print(n, end=" ")` | n = 2 |
| 4 | `for n in range(2, 8):` | 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, 8):` | 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, 8):` | 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 |
| … | (途中の18行は省略) | |
| 35 | `for x in range(2, n):` | x = 6, n = 7 |
| 36 | `if n % x == 0:` | n = 7, x = 6 |
| 37 | `for x in range(2, n):` | x = 6, n = 7 |
| 38 | `print(n, end=" ")` | n = 7 |
| 39 | `for n in range(2, 8):` | n = 7 |
| 分岐 | `else:` | 実行される |
| 結果 | 実際の出力 | 2 3 5 7 |
- A
正しい。ループの else 節は、break で抜けずにループが最後まで終わったときに実行される。割り切れる数が見つからなかった n(素数)だけが出力される。
- B
誤り。割り切れる数が見つかった n では break するので、else 節は実行されない。
- C
誤り。break したときは else 節が実行されない。
- D
誤り。break しなかったときに else 節が実行される。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。