清單逐一讀取
L1|基礎JSA01-D01看題目內容
- 輸入
- 第一行:一個整數 N。 第二行:N 個整數,以空白分隔。
- 輸出
- 依序輸出每個數字,每個數字各佔一行。
輸入
3 5 8 2
5 8 2
輸入
2 10 20
10 20
讀入一串資料,用位置取出資料、正著走或倒著走
清單就像一排有編號的置物櫃:第 1 格、第 2 格、第 3 格……每一格放一筆資料。只要知道「第幾格」,就能直接拿出裡面的東西。
題目的資料通常長這樣:第一行是 N(有幾筆資料),第二行是 N 個數字。讀入的方法都一樣:
詢問並等待 → N
重複 N 次:
詢問並等待 → 數字
(直接處理這個數字,或把它添加到清單最後)
| 你想做的事 | Blockly | Scratch |
|---|---|---|
| 準備一個空清單 | 將 全部數字 設為「建立空的清單」 | 刪除 全部數字 的所有項目 |
| 把資料放到清單最後 | 自清單 全部數字 添加 最後一筆 為(數字) | 添加(數字)到 全部數字 |
| 取出第 P 項 | 自清單 全部數字 取得 # P | 全部數字 的第 P 項 |
如果每一筆資料讀到就能馬上處理(例如依序說出來),就不需要清單。只有當你需要之後再拿某一筆資料,例如「第 P 項是多少」「倒著說出來」,才需要先把資料存進清單。
先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。
5 8 3 12 7 10 3
12
位置 P 是在最後才輸入的。讀數字的時候還不知道要哪一個,所以要先把 N 個數字全部存起來,等讀到 P 再去拿。
詢問並等待 → N
全部數字 設為 空清單
重複 N 次:
詢問並等待 → 數字
把 數字 添加到 全部數字 的最後
詢問並等待 → P
說出 全部數字 的第 P 項輸入 N = 5,數字「8 3 12 7 10」,P = 3:清單存好後是[8, 3, 12, 7, 10],第 3 項是 12。
按「載入範例」,注意「建立空的清單」放在迴圈前面,「添加到清單」放在迴圈裡面。
5 10 20 30 40 50 3
60
| P 的位置 | 左鄰居 | 右鄰居 |
|---|---|---|
| 在中間(1 < P < N) | 第 P−1 項 | 第 P+1 項 |
| 在最前面(P = 1) | 沒有,當作 0 | 第 P+1 項 |
| 在最後面(P = N) | 第 P−1 項 | 沒有,當作 0 |
所以要先判斷「有沒有左鄰居(P > 1)」「有沒有右鄰居(P < N)」,再決定要不要去拿那一項:
(前面和上一題一樣,讀入並存好清單、讀入 P) 左邊 設為 0 如果 P > 1:左邊 設為 全部數字 的第 P−1 項 右邊 設為 0 如果 P < N:右邊 設為 全部數字 的第 P+1 項 說出 左邊 + 右邊
清單[10, 20, 30, 40, 50]:
按「載入範例」,範例答案用一個「測試…如果為真…如果為假…」積木,把「有鄰居就取值,沒有就用 0」寫在一行裡。和上面用兩個「如果」的寫法效果一樣。
照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。
3 5 8 2
5 8 2
2 10 20
10 20
2 15 5
Day-1-15 Day-2-5
3 12 15 20
Day-1-12 Day-2-15 Day-3-20
4 10 20 30 40
40 30 20 10
3 1 2 3
3 2 1
學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。