← 返回大綱
總複習

第 1~5 章
拖拉題庫

不用打字,把程式積木拖進空格就好

怎麼玩

兩種操作方式,用你順手的那種

方式一:用拖的

按住下面的積木,拖到虛線空格上放開。

方式二:用點的(觸控板推薦)

先點一下積木(會變黃),再點你要放的空格。

放錯了怎麼辦

直接點那個空格,積木就會退回下面的池子。

填完可以直接跑跑看 ▶

按「執行看看」會把你拼出來的程式真的送去執行, 直接看到輸出。
就算拼錯也可以跑 —— 看看錯誤訊息長什麼樣,比只看紅框學得更多。

注意

池子裡的積木比空格多 —— 有些是故意放來混淆的,不是每個都用得到。
「執行看看」需要先在 Playground 設定過伺服器,設定會自動沿用到這裡。

第一、二章

變數 · 輸入輸出 · 判斷

第 1 題

讀入姓名和年齡

年齡要能拿來做數學運算,所以不能只是字串。

name = ("請輸入姓名:") age = (input("請輸入年齡:")) print(f"{name} 明年 {age + 1} 歲")
input int str print float
input() 拿回來的永遠是字串。字串沒辦法 +1,要先用 int() 轉成整數。
第 2 題

算圓面積

半徑可能是小數,而且要算「半徑的平方」。

r = (input("半徑:")) area = 3.14 * r 2 print(f"面積:{area}")
float int ** * // %
# 輸入 2.5 時: 面積:19.625
小數要用 float(),用 int() 會把 2.5 砍成 2。
「平方」是 *** 是乘法、// 是整數除法。
第 3 題

成績分級

90 以上 A、80 以上 B、其他 C。

score = int(input("分數:")) if score >= 90: print("A") score >= 80: print("B") : print("C")
elif else if while for
第二個條件要「前面沒成立才檢查」→ elif
最後那個是「以上通通沒成立」,它不需要條件,所以只有冒號。
第 4 題

入場檢查

要滿 18 歲而且有票才能進場。

age = 20 has_ticket = True if age >= 18 has_ticket: print("可以入場") else: print("不能入場")
and or not && ==
「而且」= and,「或者」= or
Python 不用 &&,那是別的語言的寫法。
第 5 題

判斷奇偶數

除以 2 之後看有沒有餘數。注意「等於」要用哪個符號。

n = int(input("輸入一個整數:")) if n 2 0: print("偶數") else: print("奇數")
% // / == = !=
% 是取餘數(7 % 2 得到 1)。
= 是「把值存進去」,比較要用兩個等號 ==
第三章

迴圈

第 6 題

印出 2 到 10 的偶數

for i in (2, , 2): print(i, end=" ")
range len list 11 10 12
2 4 6 8 10
range(開始, 結束, 間隔) 的「結束」不包含在內。
想印到 10,結束就要寫 11。
第 7 題

一直加到超過 100

從 1 開始累加 1、2、3…,加到總和超過 100 就停,印出加到哪個數字。

total = 0 n = 1 total <= 100: total = total + n n 1 print(n)
while for if += -= ==
「不知道要跑幾次,只知道停止條件」→ 用 while
n += 1n = n + 1 的簡寫。
第 8 題

3x3 乘法表

每印完一列要換行。

for i in range(1, 4): for j in range(1, 4): print(f"{i}x{j}={}", end=" ")
i * j i + j i, j print() break continue
1x1=1 1x2=2 1x3=3 2x1=2 2x2=4 2x3=6 3x1=3 3x2=6 3x3=9
最後那格的縮排位置很重要 —— 它跟內層 for 對齊,代表「內層跑完一輪才做一次」。
空的 print() 就是印一個換行。
第 9 題

跳過 3、遇到 7 就停

for i in range(1, 11): if i == 3: if i == 7: print(i, end=" ")
continue break return pass exit
1 2 4 5 6
continue = 這一圈不做了,跳到下一圈
break = 整個迴圈直接結束
第四章

函式

第 10 題

最基本的函式

結果要能拿去繼續運算,不能只印出來。

add(a, b): a + b answer = add(3, 5) print(answer * 2)
def return print function input
16
如果第二格放 printanswer 會變成 None,下一行就會出錯。
要拿結果繼續算就一定要 return
第 11 題

預設參數

沒指定招呼語時,預設用「你好」。

def greet(name, ): print(f"{greeting},{name}!") greet("小明") greet("小華", "早安")
greeting="你好" greeting "你好" greeting == "你好"
你好,小明! 早安,小華!
預設值直接寫在參數後面:參數名=預設值
只放 greeting 的話,greet("小明") 會因為少一個引數而出錯。
第 12 題

一次回傳兩個值

def min_max(numbers): return min(numbers), max(numbers) = min_max([3, 9, 1]) print(lo, hi)
lo, hi lo [lo, hi] lo = hi
1 9
函式回傳兩個值時,左邊也用逗號寫兩個變數接,會自動一對一分配。
第 13 題

函式呼叫函式

已經有 double 了,quad 就不用重寫一次乘法。

def double(n): return n * 2 def quad(n): return (double(n)) print(quad(3))
double quad n print
12
3 → double → 6 → double → 12。
quad 的話會自己呼叫自己,永遠停不下來。
第五章

list 與 dict

第 14 題

從牌堆抽一張到手牌

deck = ["A♠", "2♠", "3♠"] hand = [] card = deck.() hand.(card) print(hand) print(deck)
pop append insert remove sort
['3♠'] ['A♠', '2♠']
pop() 會「拿走並交回」最後一個,剛好就是抽牌。
remove() 只是刪掉,不會把東西交給你。
第 15 題

算平均分數

scores = [80, 90, 70] total = 0 for s in scores: total = total s print(total / (scores))
+ - * len range max
80.0
len(scores) 是「有幾個」,這裡是 3。
注意 for s in scores 拿到的 s分數本身,不是位置編號。
第 16 題

查點數對照表

values = {"A": 11, "K": 10, "Q": 10} card = "K" print(values)
[card] (card) ["card"] .card [0]
10
dict 用中括號查值。card 沒有引號才會被當成變數(值是 "K");
["card"] 是去找 key 叫做 card 的那筆,會找不到。
第 17 題

走訪整個記分板

要同時拿到名字和分數。

board = {"小明": 90, "小華": 85} for name, score in board.(): print(f"{name}:{score} 分")
items keys values get
小明:90 分 小華:85 分
兩個東西(key 和 value)就用 .items()
.keys() 只給名字、.values() 只給分數,都不夠。
綜合挑戰

混合題

第 18 題

把平均分數包成函式

用到:函式 + 迴圈 + list。

def average(numbers): total = 0 for n in numbers: total = total + n return total len(numbers) scores = [90, 80, 70] print(f"平均:{}")
/ // * average(scores) average scores
平均:80.0
f-string 的大括號裡可以直接呼叫函式,但要記得加上括號和引數。
只寫 average 會印出函式本身,不是計算結果。
第 19 題

找出最高分的人

用到:dict + 迴圈 + 判斷。

board = {"小明": 90, "小華": 85, "小美": 95} best_name = "" best_score = 0 for name, score in board.items(): score > best_score: best_score = score best_name = print(f"{best_name} 最高分,{best_score} 分")
if while elif name score best_score
小美 最高分,95 分
迴圈裡面用 if,不是 while —— 每一圈只判斷一次就好。
分數要記,名字也要記,不然最後印不出是誰。
第 20 題

21 點的算點數函式

用到:函式 + 迴圈 + dict + 字串切片。這題就是 21 點那份教材的核心。

def hand_value(hand): values = {"A": 11, "K": 10, "5": 5} total = 0 for card in hand: rank = card[] total = total values[rank] total print(hand_value(["A♠", "K♥"]))
:-1 0 -1 + - return print
21
card[:-1] = 從頭取到「最後一個之前」,把花色切掉。
0 的話 "10♥" 只會拿到 "1",10 點的牌全部算錯。
-1 則是拿到花色本身。

總複習完成!

完成 0 / 20 題

這些題目全部用拖的就能完成,但真正寫程式時是從一片空白開始
挑兩三題到 Playground 自己打一次,你會發現差別。

已完成 0 / 20 題