ITS Python 認證 — 考照重點總整理

這份文件怎麼用

  1. 考前 3 天:從頭讀一遍,重點放在每章的 ⚠️ 必考陷阱
  2. 考前 1 天:只看最後的 🔥 考前 30 分鐘速記卡
  3. 做題時對答案 → 01-模擬題庫解答與勘誤速查
  4. 新題型加強 → 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")intint − int 仍為 int
"字串" + str(x)str字串串接
10 / 4float真除法永遠回傳 float(即使整除)
10 // 4int兩個 int 相除取整
10 // 4.0float有 float 參與 → float(數值取整)
5.5 / 1float
"5" * 4str字串重複 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.0
a = 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 = True

datetime 格式化

import datetime
d = datetime.datetime(2017, 4, 7)
print('{:%B-%d-%y}'.format(d))   # April-07-17

⚠️ 考題選項印成全大寫 APRIL-07-17

Python 實際輸出是 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'

三個判斷原則(考試必用)

  1. 第一個條件用 if,後續同層用 elif,收尾用 else
  2. 進入新的縮排層級(巢狀)時,第一個判斷又要重新用 if
  3. 大範圍往小範圍(或反之)依序寫,前面的條件已排除的就不用再寫。
# 巢狀範例 — 注意內層第一個是 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"); break

for-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                      # ← 忘了寫會無窮迴圈

⚠️ 迴圈除錯必考四點

  1. 條件式後面忘記 冒號 :
  2. [ ] 而不是 ( ) 包條件 → while [i < 10]
  3. numList(i) 應為 numList[i](索引用中括號)
  4. 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 math

random ★★★

函式範圍記法
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
# 輸出:Bacon

os

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 可以同時有 finallyexcept✅ 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執行到那一行才爆TypeErrorValueErrorZeroDivisionError
邏輯錯誤 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 分

  1. input() 回傳 str,要算數就包 int() / float() / eval()
  2. / 一定回傳 float// 是整除;% 是取餘。
  3. 優先序:()** → 正負號 → * / // %+ - → 比較 → andor
  4. -a**2 = -(a**2);要平方負數必須寫 (-a)**2
  5. == 比值、is 比物件;字串/數字是不可變的。
  6. 切片 [start:stop:step] 不含 stop[::-1] 反轉;[:-N] 排除最後 N 個。
  7. list + list 是串接,list * n 是重複。
  8. in 回傳 True/False,不是索引。
  9. 字典鍵是 int、input() 是 str → 永遠找不到(資料類型不符)。
  10. format{0} 是第一個引數(從 0 開始數)。
  11. 四捨五入兩位 → format(x, '.2f')%6.2f%-20s 是靠左寬 20。
  12. 檔案模式:w 清空、a 附加、r 唯讀(不存在會錯)、w+/a+ 可讀寫。
  13. readline() 檔尾回傳 ""、空白行回傳 "\n"
  14. 檢查檔案存在只有 os.path.isfile();讀全部是 file.read();寫是 file.write()
  15. 同層第一個判斷用 if、後續用 elif、收尾用 else巢狀內層第一個又是 if
  16. range(a, b) 含 a 不含 b;走訪清單索引用 range(len(x))(不要 −1!)。
  17. break 跳出、continue 跳過本輪、pass 什麼都不做;for-else 的 else 在沒 break 時執行。
  18. 註解用 #;docstring 用 """...""" 放在 def 下一行;列印用 函式名.__doc__
  19. randint(a,b) 含 brandrange(a,b) 不含 bfloor 捨去、ceil 進位、fabs 絕對值。
  20. 一個 try 只能配一個 finallyfinally 一定執行;斷言 assertEqual(值) / assertIs(物件) / assertIn(包含) / assertIsInstance(類別)。

📎 相關文件

文件內容適用時機
01-模擬題庫解答與勘誤速查CH01~CH08 全部答案 + 官方勘誤 7 處對答案、訂正課本
02-2024新增考題重點解析2024/12 新題(約 15%)逐題詳解加強新題型
03-考前速查表(A4列印用)濃縮 4 頁(雙面 2 張),可直接列印發給同學考前一天
04-易錯題自我測驗卡46 張摺疊式問答卡,點開才看答案自我檢測
05-SR閃卡-ITS Python47 張間隔重複閃卡(外掛用資料檔)每天 5 分鐘
06-閃卡使用說明閃卡安裝與操作教學發給同學