ITS Python 認證 — 考照重點總整理
這份文件怎麼用
- 考前 3 天:從頭讀一遍,重點放在每章的
⚠️ 必考陷阱。- 考前 1 天:只看最後的 🔥 考前 30 分鐘速記卡。
- 做題時對答案 → 01-模擬題庫解答與勘誤速查
- 新題型加強 → 02-2024新增考題重點解析
資料來源:2024 ITS PYTHON 出85趴.pdf(教材模擬題庫,CH01–CH08)、PYTHON_202412_OK_15趴.pdf(2024/12 新題詳解)、python修正.txt(官方勘誤)
📊 考試概況
| 項目 | 內容 |
|---|---|
| 證照名稱 | ITS (Information Technology Specialist) — Python |
| 發證單位 | Certiport / Pearson VUE |
| 題型 | 單選、複選、是非 (Yes/No)、下拉選單填空、程式碼片段排序、連連看 |
| 章節範圍 | CH01 變數與資料型態 → CH08 例外處理與單元測試 |
| 命中率 | 教材題庫約涵蓋 85%,另約 15% 為新題(見 02-2024新增考題重點解析) |
題型提示
「程式碼片段排序」與「下拉選單填空」每格獨立計分(部分分數),不會的也一定要填,不要空白。
CH01|變數與資料型態
核心觀念
# 1. input() 的回傳值「永遠」是字串 str
age = input("Enter your age: ") # age 是 str,不是 int!
# 2. 型態轉換
int("90") # 字串 → 整數
float("3.14") # 字串 → 浮點數
str(90) # 數值 → 字串
eval("12+3") # 把字串當「運算式」執行 → 15 (int)
# 3. 檢視型態
print(type(name)) # <class 'str'>
# 4. 數值運算會自動提升型態
a = 10
b = a + 0.1 # int + float → float型態判定速查
| 運算式 | 結果型態 | 說明 |
|---|---|---|
input(...) | str | 最高頻考點 |
eval("2024") - eval("18") | int | int − int 仍為 int |
"字串" + str(x) | str | 字串串接 |
10 / 4 | float | 真除法永遠回傳 float(即使整除) |
10 // 4 | int | 兩個 int 相除取整 |
10 // 4.0 | float | 有 float 參與 → float(數值取整) |
5.5 / 1 | float | |
"5" * 4 | str | 字串重複 4 次 → "5555" |
type(+1E10) | float | 科學記號是浮點數 |
type("True") | str | 有引號就是字串! |
type(False) | bool |
⚠️ 必考陷阱
print("x" + 5)→ TypeError,str 不能直接 + int。要寫str(5)或用逗號分隔。- 「即使使用者輸入小數也要轉整數」→ 用
int(input(...)),不是float(...)。int()是無條件捨去(truncate),不是四捨五入。
CH02|運算子與運算式
運算子優先順序(由高到低)★★★
1. () 括弧
2. ** 指數
3. +x -x ~x 正號、負號、位元反轉(~ 才是「反位元」)
4. * / // % 乘、除、整除、取餘
5. + - 加、減
6. 比較運算子 < <= > >= == !=(含 in / not in / is / is not)
7. not 邏輯否定
8. and
9. or
⚠️
not的位置很容易記錯
not排在比較運算子「後面」(優先序更低),不是跟-x同一層。
所以not a == b會被解讀成not (a == b),而不是(not a) == b。a, b = 2, True not a == b # True ← Python 實際行為 = not (a == b) (not a) == b # False ← 若 not 與 -x 同層才會是這個結果記法:「先算完、再比較、最後才否定」。
~(位元反轉)才是與正負號同層的那個。
經典計算題
value1 = 9; value2 = 4 answer = (value1 % value2 * 10) // 2.0 ** 3.0 + value2 # ① 2.0 ** 3.0 = 8.0 # ② 9 % 4 = 1 # ③ 1 * 10 = 10 # ④ 10 // 8.0 = 1.0 ← 有 float 參與 → float # ⑤ 1.0 + 4 = 5.0 ✅ 答案 5.0a = 24; b = 7 ans = (a % b * 100) // 2.0 ** 3.0 - b # 24%7=3 → 3*100=300 → 2.0**3.0=8.0 → 300//8.0=37.0 → 37.0-7=30.0 ✅(3 * (1 + 2) ** 2 - 2 ** 2 * 3) # (1+2)=3 → 3**2=9 → 3*9=27 ; 2**2=4 → 4*3=12 ; 27-12=15 ✅
負號與指數 ★
-a ** 2 # 等於 -(a ** 2) ← 指數優先於負號
(-a) ** 2 # 才是「a 乘以 -1 之後再平方」✅
(a + 5) ** 2 # 「a 加 5 然後平方」✅== vs is
| 運算子 | 比較什麼 | 記法 |
|---|---|---|
== | 值 / 內容是否相同 | equal value |
is | 是否為同一個物件(記憶體位址) | identity |
numList = [1,2,3,4,5]; alphaList = ["a","b","c","d","e"]
print(numList is alphaList) # False
print(numList == alphaList) # False
numList = alphaList # 兩個變數指向同一物件
print(numList is alphaList) # True
print(numList == alphaList) # True不可變性 (Immutability) ★★
a = 'Config1'
b = a # b 指向 'Config1'
a += 'Config2' # 字串不可變 → 建立「新物件」,a 改指新物件
print(a) # Config1Config2
print(b) # Config1 ← b 不受影響!布林值判斷
0 or 5 # → 5 (非零 → True)✅
bool(0) # → False
None is None # → True ✅
-5 < 0 < 5 # → True(鏈式比較)✅截斷小數的兩種寫法
avg = int(total / count) # ✅ 先真除法再強制轉型
avg = total // count # ✅ 整數除法
# ❌ total ** count 是指數,不是除法⚠️ 必考陷阱
if n1 = n2:→ 語法錯誤(=是指派,比較要用==)if n2 <> n1:→ Python 3 不支援<>,要用!=if num1 <= num2:的訊息寫「只有小於才印」→ 錯,等於時也會印
CH03|字串與資料串列 (List)
切片 Slicing ★★★
串列[start : stop : step] ← stop「不包含」
以 alph = "abcdefghijklmnopqrstuvwxyz" 為例:
| 寫法 | 結果 | 說明 |
|---|---|---|
alph[3:6] | def | 索引 3,4,5 |
alph[:6] | abcdef | 省略 start → 從 0 開始 |
alph[3:15] | defghijklmno | |
alph[3:15:3] | dgjm | 每 3 個取 1 |
alph[15:3:-3] | pmjg | 反向 |
alph[::-3] | zwtqnkheb | 全部反向每 3 取 1 |
alph[::-1] | 整串反轉 | 反轉字串最快寫法 |
排除「最後 N 個」的標準寫法
60 人名單、最後 3 名是幹部 → 只要非幹部:
classroom[0:-3]✅ 或classroom[:-3]✅
(切片不含 stop,所以-3正好排除最後 3 個)200 人、排除最後 5 位主管 →
employees[0:-5]或employees[:-5]
從第 2 個開始每隔一個
month[1::2]✅(索引 1 起、步進 2)
List 的 + 與 *
list_1 = [1,2]; list_2 = [3,4]
list_3 = list_1 + list_2 # [1,2,3,4] 串接
list_4 = list_3 * 3 # [1,2,3,4,1,2,3,4,1,2,3,4] 重複in / not in
fruits = ["Apple","Banana","Cherry"]
print("Apple" in fruits) # True
print("Tomato" not in fruits) # True
print(4 in [0,1,2,3,4]) # True ← 回傳布林值,不是索引!反轉字串的兩種考法
# 寫法 A:for + 倒序 range
for index in range(len(backwards_name) - 1, -1, -1):
forward_name += backwards_name[index]
# 寫法 B:while + 索引指標
length = len(backward_name) - 1 # 最後一個字元索引 = 長度 - 1
while length >= 0:
forward_name += backward_name[length]
length -= 1⚠️ 字典鍵型態不符(超高頻)
rooms = {1: 'Foyer', 2: 'Conference Room'} # 鍵是 int,值是 str
room = input('Enter the room number: ') # room 是 str!
if not room in rooms: # "1" != 1 → 永遠找不到
print('Room does not exist.')修正:room = int(input(...))
考點答案:① 整數和字串 ② String ③ 不符合的資料類型
CH04|輸入與輸出操作
format() 的索引 ★★
x="oranges"; y="apples"; z="bananas"
data = "{1} and {0} and {2}"
print(data.format(z, y, x))
# 索引 0=z(bananas)、1=y(apples)、2=x(oranges)
# → "apples and bananas and oranges"格式化輸出對照表
| 需求 | % 格式 | format() 格式 |
|---|---|---|
| 靠左對齊,寬 20 | %-20s | {0:<20} |
| 靠右對齊,寬 10 | %10s | {0:>10} |
| 總寬 6、小數 2 位 | %6.2f | {1:6.2f} |
| 四捨五入到 2 位小數 | — | format(average, '.2f') |
| 寬 10 靠左(字串) | — | {0:10} |
| 寬 5、小數 1 位 | — | {1:5.1f} |
| 寬 7、小數 2 位 | — | {2:7.2f} |
XXX.XX的意思小數點左邊 3 位、右邊 2 位 → 總寬 6(含小數點)→
%6.2f
逗號分隔輸出(字串加引號、數字不加)
# 需求:"商品名", 數量
print('"{0}", {1}'.format(item, sales)) # ✅
print('"' + item + '",', sales) # ✅(print 用逗號會自動加空格)
print('"%s",%s' % (product, qty)) # ✅
print(item + ',' + sales) # ❌ TypeError(sales 是 int)檔案開啟模式 ★★★
| 模式 | 檔案不存在 | 檔案已存在 | 可讀 | 可寫 |
|---|---|---|---|---|
'r' | 報錯 | 從頭讀 | ✅ | ❌ |
'w' | 建立 | 清空覆寫 | ❌ | ✅ |
'a' | 建立 | 附加到結尾 | ❌ | ✅ |
'r+' | 報錯 | 不清空 | ✅ | ✅ |
'w+' | 建立 | 清空 | ✅ | ✅ |
'a+' | 建立 | 附加 | ✅ | ✅ |
題目關鍵字 → 模式
- 「不存在就建立」+「已有內容就刪除/覆寫」→
'w'- 「不存在就建立」+「已有內容就加到最後」→
'a'- 「不存在就建立」+ 又要讀又要寫 →
'w+'
檔案常用方法
import os
os.path.isfile('myFile.txt') # ✅ 檢查檔案是否存在(不是 os.exist / os.find)
file = open('myFile.txt')
print(file.read()) # 讀全部
line = file.readline() # 讀一行
file.write("End of listing") # 寫入(不是 file.add / append)
file.close()
# with 寫法:離開縮排自動關檔,即使發生例外也會關
with open('example.txt', 'w') as f:
f.write('Hello, world!')readline() 的回傳值 ★★★
| 情況 | 回傳 |
|---|---|
| 讀到檔尾 (EOF) | "" 空字串 |
| 讀到空白行 | "\n" |
line = inventory.readline()
if line != "": # ← 判斷「還沒到檔尾」
if line != "\n": # ← 過濾空白行
print(line)
else:
print("End of file"); eof = Truedatetime 格式化
import datetime
d = datetime.datetime(2017, 4, 7)
print('{:%B-%d-%y}'.format(d)) # April-07-17⚠️ 考題選項印成全大寫
APRIL-07-17Python 實際輸出是
April-07-17(只有首字大寫),%B回傳的是April不是APRIL。
官方選項寫成全大寫,應該只是排版習慣。考試仍選那個「月份全名 - 兩位日 - 兩位年」的選項(唯一辨識點是格式,不是大小寫)。
課堂上可以實際跑一次,順便讓同學記住%B的真正輸出樣子。
| 符號 | 意義 | 範例 |
|---|---|---|
%B | 月份全名 | April |
%A | 星期全名 | Friday |
%d | 兩位數日 | 07 |
%y | 兩位數年 | 17 |
%Y | 四位數年 | 2017 |
%W | 一年中的第幾週 | 14 |
CH05|判斷式與迴圈流程控制
階梯式 if-elif-else ★★★
grade = int(input("Enter a numeric grade"))
if grade >= 90: letter_grade = 'A'
elif grade >= 80: letter_grade = 'B'
elif grade >= 70: letter_grade = 'C'
elif grade >= 65: letter_grade = 'D'
else: letter_grade = 'F'三個判斷原則(考試必用)
- 第一個條件用
if,後續同層用elif,收尾用else。- 進入新的縮排層級(巢狀)時,第一個判斷又要重新用
if。- 由大範圍往小範圍(或反之)依序寫,前面的條件已排除的就不用再寫。
# 巢狀範例 — 注意內層第一個是 if 不是 elif
if grade <= 100: # (1) if
if grade >= 90: # (2) if ← 內層第一個,用 if!
...
elif grade >= 80: # (3) elif
...
elif grade < 80 and grade > 69: # (4) elif (5) and
...
else: # (6) else
...
else: # (7) else
print("Invalid grade entered.")分層邏輯範例(入場費)
def admission_fee(age, school):
rate = 0
if age >= 5 and school == True: # 學生
rate = 10
elif age >= 5 and school == False: # 非學生
if age <= 17: # 外層已確認 >=5,內層只需查上限
rate = 20
else:
rate = 50
return rate位數判斷(範圍要由小到大)
if num > -10 and num < 10: digits = "1" # 1 位數
elif num > -100 and num < 100: digits = "2" # 2 位數(已排除 1 位)
else: digits = ">2"迴圈
# while:條件式迴圈(不知道要跑幾次)
while x != "QUIT":
...
# for:迭代迴圈(走訪序列)
for char in x: # 走訪字串每個字元
for word in word_list: # 走訪清單每個元素
for i in range(len(items)): # 用「索引」走訪(要修改清單內容時必用)range() ★★★
range(stop) → 0 .. stop-1
range(start, stop) → start .. stop-1
range(start, stop, step)
| 需求 | 寫法 |
|---|---|
| 2 到 12 的乘法表 | range(2, 13) ← 要含 12,stop 寫 13 |
| 2 到 9 的九九乘法 | range(2, 10) |
| 走訪整個清單索引 | range(len(mylist)) 或 range(0, len(mylist)) |
| 印 5 行 (1~5) | range(1, 6) |
| 印 4 欄 (1~4) | range(1, 5) |
range(len(x) - 1)會少跑一次!這是最常見的除錯題答案。
break / continue / pass
| 關鍵字 | 作用 |
|---|---|
break | 立刻跳出整個(最內層)迴圈 |
continue | 跳過本次剩餘程式碼,繼續下一輪 |
pass | 什麼都不做(佔位用,保持語法完整) |
# 「不符合條件就跳過,繼續處理下一位」→ continue
for index in range(len(salary_list)):
if salary_list[index] >= 150000:
continue # ✅ 跳過加薪
salary_list[index] = salary_list[index] * 1.03 + 500
# 「找到就停止搜尋」→ break
if items[i] == term:
print("found"); breakfor-else / while-else ★
for i in range(len(items)):
if items[i] == term:
print("{0} was found.".format(term))
break
else: # 只有「迴圈沒有被 break 中斷」才執行
print("{0} was not found.".format(term))質數判斷樣板
n = 2
while n <= 100:
is_prime = True # ← 每一輪都要重設!(放在 while 內)
for i in range(2, n):
if n % i == 0: # ← 用取餘 %,不是 /
is_prime = False
break # 已確定不是質數,跳出省時間
if is_prime == True:
print(n)
n += 1 # ← 忘了寫會無窮迴圈⚠️ 迴圈除錯必考四點
- 條件式後面忘記 冒號
:- 用
[ ]而不是( )包條件 →while [i < 10]❌numList(i)應為numList[i](索引用中括號)- while 迴圈內忘記讓計數器遞增 → 無窮迴圈
追蹤執行流程題
product = 2; n = 5
while (n != 0):
product *= n
print(product)
n -= 1
if n == 3: break
# 第1圈:2*5=10 印出,n=4,4≠3 繼續
# 第2圈:10*4=40 印出,n=3,3==3 → break
# 答案:印出 2 行CH06|函式與程式碼註解
定義與呼叫要「對得上」★★
def get_name(): # 呼叫是 get_name() → 定義不能有參數
name = input("What is your name? ")
return name
def calc_calories(miles, calories_per_mile): # 函式內用什麼變數名,
calories = miles * calories_per_mile # 參數就要取什麼名字
return calories
biker = get_name()
calories_burned = calc_calories(distance, burn_rate) # 引數個數要相符解題步驟
① 看呼叫那行傳了幾個引數 → 決定定義幾個參數
② 看函式內部用到哪些變數名 → 決定參數名稱
預設參數 (Default Parameter)
def increment_score(score, bonus, points=1): # points 預設為 1
...| 敘述 | 對錯 |
|---|---|
| 一旦某參數有預設值,其右側所有參數也必須有預設值 | ✅ 正確 |
| 若只傳 2 個引數給 3 個必要參數的函式 → TypeError | ✅ 正確 |
| 函式內修改參數(int)會改到外面的全域變數 | ❌ 錯誤(int 不可變、且是區域變數) |
若只用兩個參數呼叫,第三個參數的值會是 None | ❌ 錯誤(會用預設值,沒預設值就報錯) |
位置引數 vs 關鍵字引數
def roomAssignment(student, year): ...
roomAssignment(name, year=grade) # ✅ 位置 + 關鍵字
roomAssignment("Sherlock Sassafrass", 4) # ✅ 兩個位置引數
roomAssignment(student, year) # ❌ NameError(變數沒定義)
roomAssignment(year=6, name="Minnie George") # ❌ 參數叫 student 不叫 name關鍵字引數的 順序可以任意,但名稱必須和定義一致。
註解與文件字串 (Docstring)
| 項目 | Python 寫法 | 其他語言(❌ 錯誤選項) |
|---|---|---|
| 單行註解 | # 註解 | //(C/Java)、/* */(C/CSS)、<!-- -->(HTML) |
| 文件字串 | """三個雙引號""" | |
| 位置 | 緊接在 def 之後的第一行(要縮排) | |
| 列印 | print(cube.__doc__)(前後各兩個底線) |
def cube(n):
""" Returns the cube of number n """
return n * n * n
print(cube.__doc__)| 敘述 | 對錯 |
|---|---|
| Python 不會檢查註解行的語法 | ✅ |
每行註解的 # 是選擇性的 | ❌ 一定要有 |
comment = "# Return the value" 會被視為註解 | ❌ 引號內是字串 |
return x ** y # raise x to y 是合法的內嵌註解 | ✅ |
沒有 return 的函式
只有 print() 沒有 return 的函式 → 不會回傳值(實際回傳 None)。
CH07|模組的使用
import 的四種寫法
import datetime # 用 datetime.datetime.now()
from datetime import datetime # 用 datetime.now()
from datetime import datetime as dt # ✅ 設定替代名稱的正確寫法
import mathrandom ★★★
| 函式 | 範圍 | 記法 |
|---|---|---|
random.randint(a, b) | a ≤ N ≤ b(含頭含尾) | int → 兩邊都含 |
random.randrange(start, stop, step) | start ≤ N < stop(不含 stop) | range → 不含結尾 |
random.choice(list) | 從清單隨機取一個元素 | |
random.shuffle(list) | 打亂清單順序(回傳 None) | |
random.random() | 0.0 ≤ N < 1.0 的浮點數 |
對照練習
- 5 ≤ N ≤ 11 →
randint(5, 11)✅ /randrange(5, 12, 1)✅- 11 ≤ N ≤ 20 →
randint(11, 20)✅ /randrange(11, 21, 1)✅- 0 ≤ N ≤ 10 →
randint(0, 10)✅ ← ⚠️ 勘誤題- 5 的倍數、5~100 →
randint(1, 20) * 5✅ /randrange(5, 105, 5)✅- 2 的倍數、2~50 →
randrange(2, 51, 2);題庫給的randint(1,25)*2✅ 與randrange(2,50,2)(只到 48,需注意)
math
| 函式 | 作用 |
|---|---|
math.fabs(x) | 絕對值(回傳 float) |
math.floor(x) | 無條件捨去(向下取整) |
math.ceil(x) | 無條件進位(向上取整) |
math.fmod(x, y) | 浮點數取餘 |
math.frexp(x) | 回傳假數與指數(考題中的干擾項) |
題目說「 移除小數 / 取整」→
floor;說「無條件進位」→ceil。兩題長很像,看清楚!
datetime
import datetime
now = datetime.datetime.now() # ✅ 取得目前日期時間
today = now.strftime("%A") # ✅ 取得星期全名 (Friday)
daysLeft = 6 - now.weekday() # 距離週末剩幾天(weekday: 週一=0 … 週日=6)sys.argv ★
# Script.py 內容: import sys; print(sys.argv[2])
# 執行:python Script.py Cheese Bacon Bread
# argv[0]=Script.py argv[1]=Cheese argv[2]=Bacon argv[3]=Bread
# 輸出:Baconos
import os # ← 忘了 import 會 NameError!
os.path.isfile(filename) # ✅ 正確方法常見錯誤題:
if os.path.isfile(filename):報錯的原因 → 忘了import os。
CH08|例外處理與單元測試
try / except / else / finally ★★★
try:
process() # 可能出錯的程式碼
except ValueError: # 捕捉特定例外
logError()
else: # try 成功「沒出錯」才執行
...
finally: # 不論有沒有出錯「一定」執行
displayResult()| 敘述 | 對錯 |
|---|---|
try 可以有一個或多個 except | ✅ Yes |
try 可以只有 finally 沒有 except | ✅ Yes |
try 可以同時有 finally 和 except | ✅ Yes |
try 可以有多個 finally | ❌ No(只能一個,且放最後) |
標準輸入驗證樣板
while True:
try:
x = int(input("Please enter a number: "))
break # 成功就跳出
except ValueError:
print("Not a valid number. Try again...") # 失敗就重來三種錯誤的分辨 ★★
| 錯誤類型 | 何時發生 | 範例 |
|---|---|---|
| 語法錯誤 Syntax Error | 程式還沒執行就被擋下 | 少冒號、if a = b:、<> |
| 執行階段錯誤 Runtime Error | 執行到那一行才爆 | TypeError、ValueError、ZeroDivisionError |
| 邏輯錯誤 Logic Error | 不報錯但答案是錯的 | 用 // 算平均、range 少跑一次 |
高頻題
def calc_power(a, b): return a ** b base = input(...) # str exponent = input(...) # str result = calc_power(base, exponent) # 傳入兩個 str print("The result is " + result)→ 第 02 行
str ** str引發 TypeError(執行階段錯誤),
因為程式中途就爆掉,所以「會正確輸出」是錯的。修正:第 03、04 行改用eval()或int()。
另一高頻題
file_out = open("out.txt", 'w+') # out.txt 不存在→
'w+'不存在時會自動建立,不會觸發 IOError → 程式正常執行,不會發生錯誤。
unittest ★★
import unittest # (1) import unittest
class TestIsInstance(unittest.TestCase): # (2) 繼承 unittest.TestCase
def test_isInstance(self): # (3) 方法名必須以 test 開頭
self.assertIsInstance(obj, cls, msg=None) # (4) 用 self. 呼叫斷言
if __name__ == '__main__':
unittest.main()斷言方法對照表
| 目的 | 方法 | 對應運算子 |
|---|---|---|
| 兩個值是否相同 | assertEqual(a, b) | == |
| 兩個物件是否相同 | assertIs(a, b) | is |
| 某值是否存在於清單/字串中 | assertIn(a, b) | in |
| 物件是否為某類別的實例 | assertIsInstance(obj, cls) | isinstance() |
| 條件是否為真 | assertTrue(x) |
🔥 考前 30 分鐘速記卡
背這 20 條,至少多拿 20 分
input()回傳str,要算數就包int()/float()/eval()。/一定回傳 float;//是整除;%是取餘。- 優先序:
()→**→ 正負號 →* / // %→+ -→ 比較 →and→or。 -a**2=-(a**2);要平方負數必須寫(-a)**2。==比值、is比物件;字串/數字是不可變的。- 切片
[start:stop:step]不含 stop;[::-1]反轉;[:-N]排除最後 N 個。 list + list是串接,list * n是重複。in回傳 True/False,不是索引。- 字典鍵是 int、
input()是 str → 永遠找不到(資料類型不符)。 format的{0}是第一個引數(從 0 開始數)。- 四捨五入兩位 →
format(x, '.2f')或%6.2f;%-20s是靠左寬 20。 - 檔案模式:
w清空、a附加、r唯讀(不存在會錯)、w+/a+可讀寫。 readline()檔尾回傳""、空白行回傳"\n"。- 檢查檔案存在只有
os.path.isfile();讀全部是file.read();寫是file.write()。 - 同層第一個判斷用
if、後續用elif、收尾用else;巢狀內層第一個又是if。 range(a, b)含 a 不含 b;走訪清單索引用range(len(x))(不要 −1!)。break跳出、continue跳過本輪、pass什麼都不做;for-else的 else 在沒 break 時執行。- 註解用
#;docstring 用"""..."""放在def下一行;列印用函式名.__doc__。 randint(a,b)含 b;randrange(a,b)不含 b;floor捨去、ceil進位、fabs絕對值。- 一個
try只能配一個finally;finally一定執行;斷言assertEqual(值) /assertIs(物件) /assertIn(包含) /assertIsInstance(類別)。
📎 相關文件
| 文件 | 內容 | 適用時機 |
|---|---|---|
| 01-模擬題庫解答與勘誤速查 | CH01~CH08 全部答案 + 官方勘誤 7 處 | 對答案、訂正課本 |
| 02-2024新增考題重點解析 | 2024/12 新題(約 15%)逐題詳解 | 加強新題型 |
| 03-考前速查表(A4列印用) | 濃縮 4 頁(雙面 2 張),可直接列印發給同學 | 考前一天 |
| 04-易錯題自我測驗卡 | 46 張摺疊式問答卡,點開才看答案 | 自我檢測 |
| 05-SR閃卡-ITS Python | 47 張間隔重複閃卡(外掛用資料檔) | 每天 5 分鐘 |
| 06-閃卡使用說明 | 閃卡安裝與操作教學 | 發給同學 |