2024/12 新增考題重點解析(約占 15%)
這份是什麼
教材題庫大約命中 85%,這份是 2024 年 12 月實際考出、教材沒有或問法不同的另外 15%。
共 44 題(原始編號 02~78),下面依主題重新分組並附解題關鍵。
標示 🔁 = 與教材同觀念但換情境/換問法,通常最容易掉以輕心。
回主文件 → 00-ITS Python 考照重點總整理 全部答案 → 01-模擬題庫解答與勘誤速查
一、資料型態與輸入輸出
Q02 逗號分隔輸出(複選,選 2)
需求:字串要加雙引號、數字不加、以逗號分隔。
- ✅ C
print('"{0}", {1}'.format(item, sales)) - ✅ D
print('"' + item + '",', sales)←print用逗號分隔會自動補一個空格 - ❌ A 少了雙引號 ❌ B
str + int→ TypeError
Q04 input 必須指派給變數
print("What is your name?")
name = input() # ✅ B
print(name)❌ input("name")(沒存變數)/input(name)(name 未定義 → NameError)/name = input(把函式物件指派給變數)
Q06 🔁 eval 與型態判定
age = input("Enter your age: ") # (1) → str
year = input("Enter the four-digit year: ")
born = eval(year) - eval(age) # (2) → int
message = "You were born in " + str(born) # (3) → str答案:(1) B str (2) A int (3) B str
Q07 🔁 字典鍵型態不符(會議室版)
rooms = {1: 'Foyer', 2: 'Conference Room'}
room = input('Enter the room number: ') # str!- rooms 存了哪兩種型態 → C 整數和字串
- room 是什麼型態 → D String
- 為什麼找不到 → B 不符合的資料類型(
"1" != 1)
Q08 datetime 格式化
d = datetime.datetime(2017, 4, 7)
print('{:%B-%d-%y}'.format(d))答案:C APRIL-07-17(%B 月份全名、%d 兩位日、%y 兩位年)
選項大小寫與實際執行不符
Python 實際輸出是
April-07-17(%B給的是April,不是全大寫)。官方選項印成APRIL應為排版問題。
考試照選 C(辨識點是「月份全名 + 兩位日 + 兩位年」的格式),但別讓同學誤記%B會輸出全大寫。
Q09 🔁 平均評分(咖啡版)
- (1) A
float(input("Enter next rating (1-5, -1 for done)"))← 要能相加必須轉數值 - (2) C
print - (3) D
format(average, '.2f')
Q34 🔁 format 索引(水果版)
x="oranges"; y="apples"; z="bananas"
print("{1} and {0} and {2}".format(z, y, x))
# 0=bananas, 1=apples, 2=oranges → apples and bananas and oranges答案:B
Q27 運算子優先序
value1 = 9; value2 = 4
answer = (value1 % value2 * 10) // 2.0 ** 3.0 + value22.0**3.0=8.0 → 9%4=1 → 1*10=10 → 10//8.0=1.0 → 1.0+4=5.0
答案:D 5.0
Q28 🔁 負數平方
「a 乘以負一之後再平方」→ b = (-a) ** 2(不加括號會變成 -(a**2))
Q29 截斷小數(複選,選 2)
- ✅ A
int(total_deposits / number_of_customers) - ✅ B
total_deposits // number_of_customers
Q32 🔁 字串不可變性
a = 'Config1'; b = a; a += 'Config2'
print(a) # Config1Config2 ← (1) B
print(b) # Config1 ← (2) AQ33 list 的 + 與 *
list_3 = [1,2] + [3,4] # [1,2,3,4]
list_4 = list_3 * 3答案:A [1,2,3,4,1,2,3,4,1,2,3,4]
二、切片與清單
Q35 / Q38 🔁 字串切片
alph = "abcdefghijklmnopqrstuvwxyz"
alph[3:6]→ defalph[:6]→ abcdef
Q37 排除最後 5 位(複選,選 2)
200 位員工、最後 5 位是管理階層 →
✅ D employees[:-5] ✅ E employees[0:-5]
三、判斷式 if / elif / else
Q10 相等比較與 else
- (1) B
if numList == alphaList: - (2) A
else:(elif要接條件、elseif不是 Python 關鍵字)
Q12 🔁 比較運算子的正確性(是非題)
03 if num1 == num2: → ✅ 正確
05 if num1 <= num2: → ❌「只有小於才印」是錯的,等於也會印
07 if num1 > num2: → ✅ 正確
09 if num2 = num1: → ✅「無效的比較」正確,= 是指派會語法錯誤答案:正確 / 錯誤 / 正確 / 正確
Q13 🔁 入場費分層
- (1) A
age >= 5 and school == True: - (2) A
elif age >= 5 and school == False: - (3) C
if age <= 17:← 外層已確認 ≥5,內層只查上限
Q14 🔁 一位數 / 兩位數
- (1) A
if num > -10 and num < 10: - (2) B
elif num > -100 and num < 100: - (3) A
else:
Q15 成績轉換(if → elif 階梯)
(1) B if grade >= 90: (2) D elif grade >= 80: (3) D elif grade >= 70: (4) D elif grade >= 65:
Q16 ⭐ 巢狀 if 的層級(超高頻)
(1) if grade < 100:
(2) if grade >= 90: ← 內層第一個,用 if!
(3) elif grade >= 80:
(4) elif grade < 80 (5) and grade > 69:
(6) else:
(7) else:答案:(1) B (2) B (3) A (4) A (5) B (6) D (7) D
別跟教材 CH05 第 17 題搞混
兩題結構幾乎一模一樣,只有外層條件不同:
- 本題(新題 Q16):
if grade < 100:← 小於- 教材 CH05-17(書上 5-24 頁):
if grade <= 100:← 小於等於兩題的答題邏輯完全相同(外層
if、內層第一個仍用if),條件不同不影響作答。
但抄筆記時容易互相污染,看到時先確認是哪一份考題。
Q17 🔁 is 與 == 的四次輸出
False、False、True、True
Q18 安全除法
- (1) A
if numerator is None or denominator is None:(用or、用is None) - (2) A
elif denominator == 0:
Q19 DVD 租金
- (1) B
== "n":(未準時 → 多收一天) - (2) A
== "Sunday": - (3) A
== "Thursday":
Q20 大小寫檢查(排序題)
name = input("Enter your name: ")
if name.lower() == name: ... # 全小寫
elif name.upper() == name: ... # 全大寫
else: ... # 混合Q22 方根函式(巢狀 else)
def safe_root(a, b):
(1) if a >= 0:
answer = a ** (1/b)
(2) else:
(3) if b % 2 == 0:
answer = "Result is an imaginary number"
(4) else:
answer = -(-a) ** (1/b)
return answer答案:(1) A (2) C (3) B (4) C
四、迴圈
Q21 readline 的 EOF 與空白行 ⭐
05 if line != "": # 判斷「還沒到檔尾」
06 if line != "\n": # 過濾空白行
07 print(line)答案:D
Q36 迴圈範圍與平均計算(除錯題)
- (1) D
range(len(employee_pay))← 原本-1會少跑一次 - (2) A
sum / count← 原本//會捨去小數(邏輯錯誤)
Q39 巢狀 while + for
(1) while x != "QUIT":
num = 0
(2) for char (3) in x:
num += 1答案:(1) C while (2) A for (3) C in
Q40 🔁 質數(填空題)
- 第一個空格(
if p % i == 0:之後)→break - 第二個空格(while 最後)→
p = p + 1(不寫會無窮迴圈)
Q42 追蹤輸出行數
product = 2; n = 5
while (n != 0):
product *= n; print(product); n -= 1
if n == 3: break答案:2 行(印出 10、40 後 break)
Q43 計算含特定字母的單字數
- (1) B
word in word_list: - (2) D
letter in word:
Q44 while 與 break
- (1) A
while (index < 10): - (2)
break
Q45 🔁 乘法表 2~12
- (1) B
for col in range(2, 13): - (2) C
for row in range(2, 13):
(要含 12 → stop 寫 13)
Q47 星號排 E 字形
for row in range(1, **6**)/for column in range(1, **5**)
(5 行、最寬 4 個星號)
Q48 加薪但跳過高薪者
- (1) C
for index in range(len(salary_list)): - (2) B
continue← 跳過本輪,繼續下一位
Q51 員工識別碼驗證 ddd-dd-dddd
(1) A employee_number = "" (2) B while employee_number != "123" (3) A valid = False (4) B valid = True
觀念:驗證前先預設
False,全部檢查通過才改True。
Q52 ⭐ for-else(Python 特有)
def search(items, term):
for i in range(len(items)):
if items[i] == term:
print("{0} was found in the list.".format(term))
break
else: # 沒有被 break 才執行
print("{0} was not found in the list.".format(term))五、檔案處理
Q54 建立並附加內容
- (1) A
open('myFile.txt', 'a') - (2) C
file.write
Q55 檢查存在並顯示
- (1) D
os.path.isfile('myFile.txt'): - (2) C
print(file.read())
Q57 'a' 模式的三個是非
- 檔案不存在會自動建立 → ✅ 正確
- 資料會被覆寫 → ❌ 錯誤(附加不覆寫,要覆寫用
'w') close()之後其他程式可以開啟 → ✅ 正確
Q60 🔁 要建立、要清空、要寫入
答案:D open("local_data", "w")
Q61 ⭐ 'w+' 與 IOError
file_out = open("out.txt", 'w+') # out.txt 不存在'w+' 不存在會自動建立 → 不會觸發 IOError → A. 程式正確執行,不會發生錯誤
Q78 檔案函式排序
def get_first_line(filename, mode):
if os.path.isfile(filename): # ①
with open(filename, 'r') as file: # ②
return file.readline() # ③
else: # ④
return None # ⑤六、函式
Q24 / Q30 註解語法
- 單行註解 →
#(//是 C/Java、/* */是 C/CSS) - 正確的文件記錄寫法 → D(
def內用#註解)
Q25 / Q26 🔁 註解是非題(同一題出現兩次)
- Python 不檢查註解行的語法 → ✅ 正確
#是選擇性的 → ❌ 錯誤comment = "# Return the value"會被當註解 → ❌ 錯誤(引號內是字串)return x ** y # ...是內嵌註解 → ✅ 正確
Q30(2) Docstring 三問
- 單行文件字串用什麼符號 → D 三個雙引號
""" - 標準位置 → B 函式定義後的第一行(縮排內)
- 如何列印 → C
print(cube.__doc__)
Q62 定義要對得上呼叫
09 biker = get_name() → A. def get_name():
10 calories_burned = calc_calories(distance, burn_rate)
05 calories = miles * calories_per_mile → F. def calc_calories(miles, calories_per_mile):答案:A、F
Q63 反轉字串(while 版)
- (1) B
len(backward_name) - 1 - (2) B
backward_name[length]
Q67 🔁 預設參數(薪資函式)
grosspay()會語法錯誤 → ❌ 錯誤(全部參數都有預設值)grosspay(salary=50000)不會回傳任何結果 → ❌ 錯誤(會走到 else 回傳40*25=1000)grosspay(pieces=500, piecerate=4)回傳 2000 → ✅ 正確
第 2 小題與課本第 6-12 頁答案相反,見 01-模擬題庫解答與勘誤速查 > ⚠️ 官方勘誤(務必更正) 的爭議說明。
Q68 🔁 預設參數與區域變數
- 要改成
def increment_score(score, bonus, points=1):→ ✅ 正確 - 不改的話只傳兩個參數會錯 → ✅ 正確(TypeError)
- 函式內
points = points * 2會改到外面的points→ ❌ 錯誤(int 不可變 + 區域變數)
Q70 / Q76 🔁 str ** str(同一題出現兩次)
def calc_power(a, b): return a ** b
base = input(...); exponent = input(...) # 都是 str
result = calc_power(base, exponent)- 第 03、04 行會出錯 → ❌ 錯誤(input 語法正確)
- 第 02、05 行會出錯 → ✅ 正確(TypeError)
- 會正確輸出 → ❌ 錯誤
Q72 🔁 函式呼叫方式(複選,選 2)
def roomAssignment(student, year):
- ✅ A
roomAssignment(name, year=grade) - ✅ C
roomAssignment("Sherlock Sassafrass", 4) - ❌ B 變數
student、year未定義 → NameError - ❌ D 參數名稱是
student不是name→ TypeError
Q77 🔁 petStore 三個是非
- 此函式會傳回一個值 → ❌ 錯誤(只有 print,沒有 return)
- 那兩行呼叫無效 → ❌ 錯誤(關鍵字引數順序可任意)
- 那兩行呼叫會產生錯誤 → ❌ 錯誤(位置+關鍵字混用合法)
七、模組
Q66 5 的倍數、5~100(複選,選 2)
- ✅ B
randint(1, 20) * 5(5 ~ 100) - ✅ C
randrange(5, 105, 5)(5 ~ 100) - ❌ A
randrange(0,100,5)從 0 開始且最大只到 95 - ❌ D
randint(0,20)*5會產生 0
Q69 sys.argv
python Script.py Cheese Bacon Bread
argv[0]=Script.py argv[1]=Cheese argv[2]=Bacon argv[3]=Bread
print(sys.argv[2]) → D Bacon
Q71 5 ≤ N ≤ 11(複選,選 2)
- ✅ B
random.randrange(5, 12, 1)(不含 12) - ✅ C
random.randint(5, 11)(含 11)
Q74 🔁 絕對值 + 取整(複選,選 2)
- ✅ A
math.floor(x)(移除小數) - ✅ B
math.fabs(x)(絕對值)
教材 CH07 第 6 題問的是「無條件 進位」→ 答案是
ceil;這題問「移除小數」→ 是floor。看清楚題目!
八、例外處理與單元測試
Q53 🔁 try 陳述式四個是非
- 可以有一個或多個
except→ ✅ Yes - 可以只有
finally沒有except→ ✅ Yes - 可以同時有
finally和except→ ✅ Yes - 可以有多個
finally→ ❌ No
Q58 輸入驗證
- (1) A
try: - (2) C
except
Q59 try / except / finally 排序
try:
process()
except:
logError()
finally:
displayResult()Q65 🔁 unittest
(1) B unittest (2) A unittest.TestCase (3) C test_isInstance(self) (4) A self.assertIsInstance(obj, cls, msg=None)
注意:正確拼法是
assertIsInstance(大寫 I),選項有誤植,選最接近且有self.的那個。
Q73 assert 三問
- 測試兩個值是否相同 → A
assertEqual(a, b) - 測試兩個物件是否相同 → C
assertIs(a, b) - 測試清單中是否存在某值 → D
assertIn(a, b)
📌 給老師的授課建議
這 15% 的新題其實有 60% 是「舊觀念換情境」
標 🔁 的題目全部都是教材裡有的觀念,只是換了故事背景(學生 → 會議室、DVD → 租車、咖啡 → 飯店)。
提醒同學:不要背題目,要背「判斷方法」。建議課堂順序:
- 先講 00-ITS Python 考照重點總整理 > 🔥 考前 30 分鐘速記卡 的 20 條
- 再用本頁 ⭐ 標記的 5 題(Q16、Q21、Q52、Q61、Q53)當作示範題
- 最後讓同學自己做教材題庫,對照 01-模擬題庫解答與勘誤速查