先讀情境,再把程式積木拖進空格 —— 從簡單到難,共 24 題
想先確認自己看懂了嗎?第 1–4 章觀念複習:預測、解釋與新題確認
← → 切換難度 | ↑ ↓ 下一題
搞懂程式要幫誰、解決什麼問題,再看右邊的程式碼。對照「預期輸出」想想每一行在做什麼。
放錯了就點那個空格,積木會退回池子。填完按「執行看看 ▶」可以真的跑跑看,拼錯也能跑,看錯誤訊息一樣有收穫。
池子裡的積木比空格多很多,而且很多是故意放的「差一點點」:
== 和 =、>= 和 =>、int 和 Int、append 和 add……
「執行看看」需要先在 Playground 設定過伺服器,設定會自動沿用到這裡。
輸入輸出、運算、判斷
每題 3~5 格
迴圈、函式、list 入門
每題 3~5 格
迴圈 + 判斷 + 容器
每題 3~5 格
全部觀念一起用
每題 4~7 格
卡住了先按「提示」,提示會說明那些「長得很像」的積木到底差在哪。
輸入輸出 · 運算 · 判斷
第 1~6 題,按 ↓ 開始
用到:input · int · 運算 · f-string
input() 拿到的永遠是字串,要先 int() 才能乘。Int、Print 都不存在。乘法是 *,x 不是運算子、** 是次方。用到:if / else · 比較運算 · 冒號
>=(寫法是大於在前、等號在後,=> 不對)。if 和 else 後面都要接冒號 :,不是分號。else 不用條件,所以不能用 elif。用到:% 取餘數 · == 比較
% 是取餘數:8 % 2 得 0,7 % 2 得 1。/ 是除法、// 是整數除法,都不是餘數。比較相等要用兩個等號 ==。用到:布林值 · and / or · else
True / False。or(|| 是別的語言的寫法);用 and 的話兩個條件都要成立,今天 20 度就不會提醒了。用到:- · // 整數除法 · % 取餘數
65 // 10 = 6 個十元,65 % 10 = 5 個一元。/ 會得到 6.5,硬幣不會有半個。用到:input · int · f-string 大括號
int() 才能 +1,float 會印出 13.0。迴圈 · 函式 · list 入門
第 7~12 題,按 ↓ 開始
用到:for · range(開始, 結束) · 乘法
range(1, 6) 會產生 1, 2, 3, 4, 5 —— 結束值不包含,所以要寫 6。用到:while · 比較 · +=
while。<。<= 會多存一週。=+ 是 week = +1,每次都設成 1,不是累加。F = C × 9 / 5 + 32。用到:def · return · 運算順序
def,最後要有冒號。print 的話函式本身會印出數字,但交回的是 None,外面就會多印一行 None。用到:預設參數 · 小數 · int()
參數名=預設值,只用一個等號。0.9,不是 9 或 90。用到:list · append · remove · len
append(add 是 set 的、push 是別的語言的)。remove;pop 要給的是位置,不是內容。數量用 len()。用到:索引 · 負索引 · 切片
-1 是最後一個;只有 5 個人時 [5] 會超出範圍。[:3] 取索引 0、1、2,不含 3。迴圈 + 判斷 + list / dict 混搭
第 13~18 題,按 ↓ 開始
用到:for · if · append · len
for 變數 in 清單,用 in 不是 of。> 會把 60 漏掉。人數是 len,sum 會變成分數加總。用到:for · if · continue · break
continue:這一圈不做了,跳到下一圈。break:整個迴圈直接結束。pass 什麼都不做,4 還是會被印出來。8 樓要印,所以是遇到 9 才停。用到:dict 查值 · for · +=
order;走 menu 會變成整份菜單各點一個。["item"] 會去找名字叫 item 的那道菜,找不到。用到:dict 更新 · for · .items()
votes[b] += 1:用目前這張票的飲料名稱當 key,票數加 1。= 的話每種都只會是 1 票。要同時拿到名稱和票數 → .items()。用到:def · if / elif / else · for · +=
<;「65 歲以上」含 65 → >=。elif,不是 else if。呼叫時要傳這一個人的年齡 a。用到:while · input · == · break · +=
"1234",input() 拿到的也是字串,直接用 == 比就好。break;用 continue 會回到迴圈開頭繼續要你輸入密碼。函式 + 迴圈 + 判斷 + 容器全部一起來
第 19~24 題,按 ↓ 開始
用到:dict 走訪 · if · 記錄目前最大值
用到:for · += · if · / · len
len(steps);sum(steps) 是總步數。/;% 是取餘數,不是除法。min()、max(),要自己寫函式找出最低和最高溫,一次交回兩個值。用到:def · for · if · 回傳兩個值
[0];4 個元素沒有 [4]。<、找最高用 >。外面的變數叫 lo、hi,函式裡的 low、high 在外面拿不到。用到:巢狀 for · range · end= · print()
range(i)。end="" 讓星星黏在同一行。print() 跟內層 for 對齊,代表「這層印完才換行」。用到:def · dict · if / else · -= · return
>=。-= 扣庫存;=- 會變成「庫存 = 負的數量」。訊息要交給外面的 print,所以用 return。用到:def · return · dict.items() · 巢狀 list · if · append
// 會把阿華的 61.33 變成 61.0。average(nums);avg 是存結果的變數,不是函式。<。
這些題目全部用拖的就能完成,但真正寫程式時是從一片空白開始。
挑兩三個情境到 Playground 自己從頭打一次,你會發現差別。