フィボナッチ数列
次のコードを実行したときの出力として、正しいものを1つ選べ。
a, b = 0, 1
while a < 10:
print(a, end=" ")
a, b = b, a + b
- A
0 1 2 3 5 8 - B
1 1 2 3 5 8 13 - C
0 1 1 2 3 5 8 13 - D
0 1 1 2 3 5 8
正解と解説を見る
正解:D
多重代入では右辺をすべて先に計算し、end を指定すると改行の代わりにその文字列を出力する。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `a, b = 0, 1` | a = 0, b = 1 |
| 2 | `while a < 10:` | a = 0 |
| 3 | `print(a, end=" ")` | a = 0 |
| 4 | `a, b = b, a + b` | a = 1, b = 1 |
| 5 | `while a < 10:` | a = 1 |
| 6 | `print(a, end=" ")` | a = 1 |
| 7 | `a, b = b, a + b` | a = 1, b = 2 |
| 8 | `while a < 10:` | a = 1 |
| 9 | `print(a, end=" ")` | a = 1 |
| 10 | `a, b = b, a + b` | a = 2, b = 3 |
| 11 | `while a < 10:` | a = 2 |
| 12 | `print(a, end=" ")` | a = 2 |
| 13 | `a, b = b, a + b` | a = 3, b = 5 |
| 14 | `while a < 10:` | a = 3 |
| 15 | `print(a, end=" ")` | a = 3 |
| 16 | `a, b = b, a + b` | a = 5, b = 8 |
| 17 | `while a < 10:` | a = 5 |
| 18 | `print(a, end=" ")` | a = 5 |
| 19 | `a, b = b, a + b` | a = 8, b = 13 |
| 20 | `while a < 10:` | a = 8 |
| 21 | `print(a, end=" ")` | a = 8 |
| 22 | `a, b = b, a + b` | a = 13, b = 21 |
| 23 | `while a < 10:` | a = 13 |
| 結果 | 実際の出力 | 0 1 1 2 3 5 8 |
- A
誤り。1 が2回出力される。
- B
誤り。最初に出力されるのは 0 で、10 以上の値は出力されない。
- C
誤り。a が 13 になった時点で
a < 10を満たさず、ループを抜ける。 - D
正しい。
a, b = b, a + bは右辺をすべて計算してから同時に代入する(多重代入)。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。