第 1 題
單選題資料型別轉換單選題
執行後會印出什麼?
print(int(-3.9))
A. -4
B. -3.9
C. -3
D. 發生 ValueError
正確答案
正確答案:C. -3
為什麼?
int() 把浮點數轉成整數時會朝 0 截去小數部分;int(-3.9) 是 -3,不是向下取整的 -4。
38 題原創模擬卷,建議限時 50 分鐘。依 Certiport Python 考綱設計,題型含單選、多選、配對與排序。這是非官方模擬題,並非真題或考試題數保證。
單選題
執行後會印出什麼?
print(int(-3.9))
A. -4
B. -3.9
C. -3
D. 發生 ValueError
正確答案:C. -3
int() 把浮點數轉成整數時會朝 0 截去小數部分;int(-3.9) 是 -3,不是向下取整的 -4。
單選題
執行後會印出什麼?
code = "AB12CD"
print(code[::-1])
A. DC21BA
B. AB12CD
C. CD12AB
D. A1C
正確答案:A. DC21BA
切片 [::-1] 以步長 -1 從尾端向前取出全部字元,因此將字串反轉。
多選題
請選出兩個正確敘述。
a = [1, 2]
b = [1, 2]
c = a
A. a == b 為 True
B. a is b 為 True
C. a is c 為 True
D. b is c 為 True
正確答案:A、C。
== 比較內容,所以 a == b 為真;is 比較是否為同一個物件。c 指向 a,但 b 是另一個串列。
單選題
執行後會印出什麼?
print(-3**2)
A. 9
B. -9
C. 6
D. 發生 SyntaxError
正確答案:B. -9
次方先於一元負號計算,所以 -3**2 等於 -(3**2)。若要平方負三,需寫成 (-3)**2。
單選題
執行後會印出什麼?
n = 17
n //= 5
print(n)
A. 2
B. 3.4
C. 4
D. 3
正確答案:D. 3
n //= 5 等同於 n = n // 5。17 // 5 是整數商 3。
配對題
請將每個 Python 字面值與資料結構配對。
左側:1. [2, 1] 2. (2, 1) 3. {2, 1} 4. {'a': 1}
右側:A. 字典 B. 集合 C. 串列 D. 元組
正確答案:1→C、2→D、3→B、4→A。
方括號建立串列,逗號分隔的圓括號建立元組,沒有冒號的花括號建立集合,有鍵值對的花括號建立字典。
單選題
執行後會印出什麼?
animals = ["Yak", "Lion"]
animals.append("Ant")
animals.sort()
print(animals[0])
A. Yak
B. Lion
C. Ant
D. None
正確答案:C. Ant
加入 Ant 後,sort() 原地以字典順序排序;第一個項目為 Ant。
多選題
請選出兩個正確敘述。
items = [1, 2]
items.append([3, 4])
A. len(items) == 3
B. items[-1] == [3, 4]
C. len(items) == 4
D. items[2] == 3
正確答案:A、B。
append() 把整個 [3, 4] 當作單一元素加到串列尾端,因此 items 是 [1, 2, [3, 4]],長度為 3。
單選題
執行後會印出什麼?
print("cat" in "concatenate")
A. True
B. False
C. cat
D. 發生 TypeError
正確答案:A. True
in 可檢查一段字串是否出現在另一段字串中。concatenate 中含有連續的 cat。
單選題
執行後會印出什麼?
score = 80
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
else:
print("F")
A. A
B. B
C. C
D. F
正確答案:B. B
80 >= 90 為假,接著 80 >= 80 為真,因此進入第二個分支。
多選題
請選出兩個結果為 True 的運算式。
age = 16
has_pass = True
late = False
A. age >= 16 and has_pass
B. age > 16 or late
C. not late and has_pass
D. late or age < 16
正確答案:A、C。
age >= 16、has_pass、not late 都為真;age > 16、late、age < 16 都為假。
單選題
執行後會印出什麼?
print(list(range(2, 11, 3)))
A. [2, 5, 8, 11]
B. [2, 3, 4, 5, 6, 7, 8, 9, 10]
C. [2, 5, 8]
D. [3, 6, 9]
正確答案:C. [2, 5, 8]
range(2, 11, 3) 從 2 起,每次加 3;11 是不包含的終點。
單選題
執行後依序印出什麼?
n = 0
while n < 5:
n += 1
if n == 3:
break
print(n)
A. 1、2
B. 1、2、3
C. 0、1、2
D. 1 到 5
正確答案:A. 1、2(各一行)。
n 加到 3 時先遇到 break,因此不印出 3,也不再迴圈。
單選題
執行後依序印出什麼?
for n in range(1, 6):
if n % 2 == 0:
continue
print(n)
A. 2、4
B. 1、2、3、4、5
C. 1、3
D. 1、3、5
正確答案:D. 1、3、5(各一行)。
偶數會執行 continue,跳過當次的 print;奇數會被印出。
排序題
請排列程式片段,讓程式依序印出 A,遇到 STOP 時停止,不印出 B。
A. if items[index] == "STOP":
B. index += 1
C. while index < len(items):
D. print(items[index])
E. break
F. items = ["A", "STOP", "B"]
G. index = 0
正確順序:F → G → C → A → E → D → B。
items = ["A", "STOP", "B"]
index = 0
while index < len(items):
if items[index] == "STOP":
break
print(items[index])
index += 1
先建立串列和索引,再進入迴圈。檢查到 STOP 便跳出;否則印出目前項目,再增加索引。
多選題
請選出三個正確敘述。
for city in ("A", "B"):
for day in (1, 2):
print(f"{city}{day}")
A. 總共印出 4 行
B. 第一行是 A1
C. 最後一行是 B2
D. B1 會早於 A2 印出
正確答案:A、B、C。
外層每個城市都搭配內層兩個日期,輸出順序為 A1、A2、B1、B2,共四行。
配對題
請將關鍵字與作用配對。
左側:1. break 2. continue 3. pass 4. elif
右側:A. 當前分支不執行任何動作 B. 當前條件不成立時再檢查另一條件 C. 立即結束所在迴圈 D. 跳過當次迴圈剩餘敘述
正確答案:1→C、2→D、3→A、4→B。
break 退出迴圈;continue 開始下一次迭代;pass 只佔位置;elif 提供後續條件分支。
排序題
已知 score 是整數。請排列片段,讓分數 ≥90 為 A、80–89 為 B、其餘為 C。
A. elif score >= 80:
B. grade = "C"
C. if score >= 90:
D. grade = "A"
E. else:
F. grade = "B"
正確順序:C → D → A → F → E → B。
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
else:
grade = "C"
先檢查較高門檻,再檢查 80 分門檻;剩下的情況進入 else。
單選題
要把新內容加到現有 log.txt 結尾;若檔案不存在,則建立檔案。應使用哪個模式?
A. r
B. w
C. a
D. x
正確答案:C. a
a 是附加模式。w 會清空既有內容;r 只能讀取;x 要求檔案原先不存在。
多選題
假設 notes.txt 已存在。請選出兩個正確敘述。
with open("notes.txt", "r", encoding="utf-8") as file:
first = file.readline()
A. 離開 with 區塊後,檔案會自動關閉
B. 模式 r 會在檔案不存在時建立它
C. 在區塊內再呼叫 file.read(),會從目前位置讀取剩餘內容
D. readline() 一定會讀取整份檔案
正確答案:A、C。
with 離開區塊時會關閉檔案;readline() 讀取第一行。若在區塊內接著呼叫 file.read(),它會讀取目前位置之後的剩餘內容。r 不會建立檔案。
單選題
執行後會印出什麼?
price = 12.5
print(f"{price:.2f}")
A. 12.5
B. 12.50
C. 12.500
D. {price:.2f}
正確答案:B. 12.50
格式碼 .2f 以固定小數格式顯示兩位小數,所以 12.5 顯示為 12.50。
單選題
執行後會印出什麼?
print("{}-{:03d}".format("ID", 7))
A. ID-7
B. ID-700
C. ID-007
D. ID- 7
正確答案:C. ID-007
{:03d} 將整數以寬度 3、左側補零的格式顯示;7 因此成為 007。
單選題
執行 python app.py hello 時,sys.argv[0] 通常是哪一個字串?
A. app.py
B. hello
C. python
D. 2
正確答案:A. app.py
sys.argv[0] 是啟動的程式路徑或檔名;第一個額外參數 hello 在 sys.argv[1]。
排序題
假設 memo.txt 已存在。請排列片段,讀取整個檔案後將內容印出。
A. content = file.read()
B. print(content)
C. with open("memo.txt", "r", encoding="utf-8") as file:
正確順序:C → A → B。
with open("memo.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
先以讀取模式開檔,在 with 區塊中讀入內容,再印出儲存於 content 的字串。
多選題
請選出兩個正確敘述。
with open("log.txt", "w", encoding="utf-8") as file:
file.write("start")
A. 若 log.txt 不存在,程式會建立它
B. 若 log.txt 已存在,其舊內容會被覆蓋
C. 新文字會附加於舊內容結尾
D. 必須在區塊後手動呼叫 file.close() 才能關檔
正確答案:A、B。
w 模式會建立不存在的檔案,並在開啟已存在的檔案時先清空內容。with 會自動關閉檔案;附加內容應使用 a。
單選題
使用者在提示後輸入 42。執行後會印出什麼?
value = input("Enter a number: ")
print(type(value).__name__)
A. int
B. str
C. float
D. bool
正確答案:B. str
input() 回傳字串,即使使用者鍵入數字也是如此。需使用 int(input(...)) 才能轉成整數。
單選題
執行後會印出什麼?
def cost(base, fee=5):
return base + fee
print(cost(12))
A. 5
B. 12
C. 17
D. 發生 TypeError
正確答案:C. 17
呼叫 cost(12) 時未傳入 fee,因此使用預設值 5,回傳 12 + 5。
單選題
執行後會印出什麼?
def area(w, h):
"""Return rectangle area."""
return w * h
print(area.__doc__)
A. Return rectangle area.
B. None
C. area
D. 12
正確答案:A. Return rectangle area.
函式本文的第一個字串常值是 docstring,可以透過函式的 __doc__ 屬性取得。
多選題
請選出兩個正確敘述。
def f(x):
if x > 0:
return x * 2
A. f(3) == 6
B. f(0) is None
C. f(-1) == 0
D. 函式每次都回傳整數
正確答案:A、B。
f(3) 進入 if 並回傳 6;f(0) 沒有執行到明確的 return,因此回傳 None。
單選題
以下哪個函式定義可正確執行?
A.
def greet(name)
return name
B.
def greet(name):
return name
C.
return name
def greet(name): pass
D.
def greet(name):
return name
正確答案:D。
def 宣告末尾需要冒號,函式本文需要縮排,return 必須放在函式本文內。
配對題
請將寫法與用途配對。
左側:1. # note 2. 函式首行的 """text""" 3. pass 4. python -m pydoc math
右側:A. 產生或顯示 math 模組文件 B. 單行註解 C. 不執行動作的佔位敘述 D. 函式文件字串
正確答案:1→B、2→D、3→C、4→A。
# 後的文字是註解;函式本文首行的字串常值成為 docstring;pass 佔位;pydoc 可顯示模組文件。
單選題
執行後會發生哪一種錯誤?
numbers = [10, 20]
print(numbers[2])
A. SyntaxError
B. NameError
C. IndexError
D. 沒有錯誤,印出 20
正確答案:C. IndexError
長度為 2 的串列只有索引 0 與 1;存取索引 2 會在執行時引發 IndexError。
多選題
請選出三個正確敘述。
events = []
try:
events.append("try")
result = 8 / 2
except ZeroDivisionError:
events.append("except")
else:
events.append("else")
finally:
events.append("finally")
A. result == 4.0
B. 會執行 except 區塊
C. 會執行 else 區塊
D. 會執行 finally 區塊
正確答案:A、C、D。
8 / 2 結果為浮點數 4.0,沒有例外,因此跳過 except,執行 else;finally 不論有無例外都會執行。
單選題
在 unittest.TestCase 方法內,哪個斷言可檢查 a 與 b 指向同一個物件?
A. self.assertEqual(a, b)
B. self.assertIs(a, b)
C. self.assertIn(a, b)
D. self.assertTrue(a, b)
正確答案:B. self.assertIs(a, b)
assertIs 比較物件身分;assertEqual 比較值是否相等,兩者不同。
排序題
請排列片段,讓除以零時印出 zero,且最後一定印出 done。
A. else:
B. print("zero")
C. finally:
D. result = 10 / 0
E. except ZeroDivisionError:
F. print("done")
G. try:
H. print(result)
正確順序:G → D → E → B → A → H → C → F。
try:
result = 10 / 0
except ZeroDivisionError:
print("zero")
else:
print(result)
finally:
print("done")
try 中發生 ZeroDivisionError,進入對應的 except;else 只在沒有例外時執行;finally 最後執行。
配對題
請將函式與作用配對。
左側:1. math.ceil(x) 2. math.floor(x) 3. math.trunc(x) 4. math.fabs(x)
右側:A. 去掉小數部分並朝 0 截斷 B. 傳回浮點數形式的絕對值 C. 傳回不大於 x 的最大整數 D. 傳回不小於 x 的最小整數
正確答案:1→D、2→C、3→A、4→B。
以 x = -2.4 為例,ceil 得 -2,floor 得 -3,trunc 得 -2,fabs 得 2.4;前三者雖可能值相同,定義並不同。
單選題
假設 items 中每個值都不同。從中隨機取得兩個不重複的項目,產生新串列且不改變原串列,應使用哪個呼叫?
A. random.choice(items)
B. random.shuffle(items)
C. random.sample(items, 2)
D. random.randrange(items, 2)
正確答案:C. random.sample(items, 2)
sample 在不放回抽樣下回傳新串列。choice 只取一項;shuffle 原地重新排列;randrange 用於整數範圍。
多選題
假設已執行以下匯入。請選出三個正確敘述。
import datetime
import os
import sys
A. datetime.datetime.now() 會建立目前日期與時間的 datetime 物件
B. os.path.isfile("x.txt") 會回傳布林值
C. sys.argv[0] 是程式的第一個額外命令列參數
D. datetime.date.today().weekday() 可能回傳 0 到 6 的整數
正確答案:A、B、D。
datetime.datetime.now() 取得目前日期時間;os.path.isfile() 回傳布林值;date.weekday() 以週一為 0、週日為 6。sys.argv[0] 是程式路徑或檔名,不是第一個額外參數。