第 1 題
單選題資料型別與運算子執行下列程式碼,結果為?
print("x" + "y" * 2)
A. xyy
B. yyx
C. xyyy
D. 產生錯誤
正確答案
A. xyy
為什麼?
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "xyy"。
第 4 回共 38 題,結合逗號分割字串、負索引切片、集合新增元素與巢狀迴圈計數,練習從程式推算結果。情境題延伸到通知文字組合與條件篩選,並檢查 elif 分支順序、IndexError、模組匯入及平方根運算。適合複習索引範圍和條件成立的先後關係;每題附答案與文字解析。
執行下列程式碼,結果為?
print("x" + "y" * 2)
A. xyy
B. yyx
C. xyyy
D. 產生錯誤
A. xyy
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "xyy"。
執行下列程式碼,結果為?(提示:留意運算子優先順序)
print((2 + 3) * 4)
A. 20
B. 21
C. 19
D. 40
A. 20
Python 的運算子優先順序是 ** 最高,接著是 * 和 /,最後是 + 和 -,括號會優先運算。結果為 20。
執行下列程式碼,結果為?
print(len("apple,banana,cherry".split(",")))
A. 3
B. 4
C. 2
D. 產生錯誤
A. 3
.split() 會依指定符號把字串切成 list,共切出 3 個元素。
執行下列程式碼,輸出為?
s = "programming"
print(s[-4:])
A. ming
B. programming
C. 產生錯誤
D. MING
A. ming
負數索引從字串尾端開始數(-1 是最後一個字元),這段程式碼的結果是 "ming"。
nums = [10, 20, 30],執行以下程式碼後輸出為?
nums = [10, 20, 30]
print(nums[1:])
A. [20, 30]
B. [10, 20, 30]
C. [30, 20]
D. 產生錯誤
A. [20, 30]
依序執行後,結果為 [20, 30]。
nums = [4, 8, 15, 16],執行以下程式碼後輸出為?
nums = [4, 8, 15, 16]
print(len(nums))
A. 4
B. [4, 8, 15, 16]
C. 5
D. 3
A. 4
依序執行後,結果為 4。
下列選項中,何者屬於「不可變(immutable)型別」?(請選出所有正確答案)
A. "abc"
B. [1,2]
C. (1,2)
D. {1:2}
E. 3.0
A. "abc"
E. 3.0
正確答案為:"abc", 3.0。
請將左側項目與右側正確的說明配對:(轉型函式 ↔ 用途)
左側項目
int()float()str()bool()右側說明
A. 轉成整數
B. 轉成浮點數
C. 轉成布林值
D. 轉成字串
1 → A:int() → 轉成整數
2 → B:float() → 轉成浮點數
3 → D:str() → 轉成字串
4 → C:bool() → 轉成布林值
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「建立集合並加入新元素」
A.
print(s)
B.
s = {1, 2, 3}
C.
s.add(4)
B → C → A
s = {1, 2, 3}
s.add(4)
print(s)
正確順序如上(由上到下)。
公司的員工績效考核系統要把分數轉換成等第:90分以上「優」、80~89分「甲」、70~79分「乙」、其餘「丙」。某員工本季考核分數是 65 分,執行下列程式碼,輸出的等第為?
score = 65
if score >= 90:
grade = '優'
elif score >= 80:
grade = '甲'
elif score >= 70:
grade = '乙'
else:
grade = '丙'
print(grade)
A. 丙
B. 優
C. 甲
D. 乙
A. 丙
score = 65,由上往下第一個成立的條件決定結果,答案是「丙」。
您正在撰寫一支「客服工單優先度分級系統」的判斷程式,需求是:score >= 90 判定為「急件」,score >= 60(未滿90)判定為「一般」,其餘為「低優先」。若 score = 92,執行下列程式碼,輸出的判定結果為?
score = 92
if score >= 90:
result = '急件'
elif score >= 60:
result = '一般'
else:
result = '低優先'
print(result)
A. 急件
B. 一般
C. 低優先
D. 產生錯誤
A. 急件
score = 92,依序判斷後結果為「急件」。
公司人資系統的升遷規則:年資(years,年)需 >= 2 且績效考核分數(rating)需 >= 80 才符合升遷資格。若 years = 2、rating = 80,執行下列程式碼,輸出結果為?
years = 2
rating = 80
if years >= 2 and rating >= 80:
print('符合升遷資格')
else:
print('不符合升遷資格')
A. 符合升遷資格
B. 不符合升遷資格
C. 產生錯誤
D. None
A. 符合升遷資格
and 需要兩個條件同時成立才是 True,此例 years>=2 為True、rating>=80 為True,所以結果是「符合升遷資格」。
您正在為公司教育訓練系統撰寫巢狀判斷程式,評定測驗結果:先看 score 是否及格(>=60),及格者再看 has_bonus 是否為 True 決定是否額外加分。若 score = 92、has_bonus = False,執行下列程式碼,輸出為?
score = 92
has_bonus = False
if score >= 60:
if has_bonus:
result = '及格+加分'
else:
result = '及格'
else:
result = '不及格'
print(result)
A. 及格
B. 及格+加分
C. 不及格
D. 產生錯誤
A. 及格
外層先判斷 score >= 60 是否成立,成立才會進入內層判斷 has_bonus,結果為「及格」。
審核系統的門檻判斷規則:x = 80,判斷條件是 x > 80,執行下列程式碼,輸出為?(提醒:注意 > 是否包含等於的情況)
x = 80
if x > 80:
print('未核准')
else:
print('另一種結果')
A. 另一種結果
B. 未核准
C. 產生錯誤
D. None
A. 另一種結果
x = 80、門檻 = 80,> 不包含等於的情況,所以條件不成立,輸出「另一種結果」。
公司的系統通知模組要把 words = ['訂單', '已', '出貨', '通知'] 這幾個片段組成一則完整的訊息字串,執行以下程式碼,輸出為?
words = ['訂單', '已', '出貨', '通知']
result = ''
for w in words:
result += w
print(result)
A. 訂單已出貨通知
B. 訂單 已 出貨 通知
C. 通知出貨已訂單
D. 產生錯誤
A. 訂單已出貨通知
迴圈逐一把每個元素用 += 接到 result 後面,最後得到 "訂單已出貨通知"。
您正在開發一支自動化測試腳本,用巢狀迴圈跑所有組合:外層跑 3 種瀏覽器、內層每種瀏覽器都測 4 個頁面,執行以下程式碼,count 最後代表總測試次數,其值為?
count = 0
for i in range(3):
for j in range(4):
count += 1
print(count)
A. 12
B. 7
C. 14
D. 11
A. 12
外層執行 3 次,內層每次執行 4 次,總共執行 3 × 4 = 12 次。
公司系統的 API 重試機制規則:計數器 i 從 1 開始,每次增加 1,直到不小於 6 為止才停止重試,count 記錄總共重試了幾次。執行以下程式碼,輸出為?
i = 1
count = 0
while i < 6:
count += 1
i += 1
print(count)
A. 5
B. 6
C. 4
D. 產生錯誤(無窮迴圈)
A. 5
迴圈每次讓 i 增加 1,總共執行了 5 次才符合結束條件。
下列選項中,何者「屬於流程控制結構」?(請選出所有正確答案)
A. if/elif/else
B. for
C. while
D. try/except
A. if/elif/else
B. for
C. while
正確答案為:if/elif/else, for, while。
請將左側項目與右側正確的說明配對:(邏輯運算子 ↔ 意義)
左側項目
andornotin右側說明
A. 兩者皆需成立
B. 條件反向
C. 是否存在於序列中
D. 任一成立即可
1 → A:and → 兩者皆需成立
2 → D:or → 任一成立即可
3 → B:not → 條件反向
4 → C:in → 是否存在於序列中
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「印出串列中所有大於10的數字」
A.
for n in nums:
B.
nums = [5, 12, 8, 20, 3]
C.
if n > 10:
D.
print(n)
B → A → C → D
nums = [5, 12, 8, 20, 3]
for n in nums:
if n > 10:
print(n)
正確順序如上(由上到下)。
公司人事系統要產生員工資料卡,name 是姓名、years 是年資。執行下列程式碼,輸出為?
name = "張小傑"
years = 13
print(f"{name}的年資是{years}年")
A. 張小傑的年資是13年
B. 張小傑的年資是years年
C. name的年資是13年
D. 產生錯誤
A. 張小傑的年資是13年
f-string 會把 {} 裡的變數名稱直接替換成變數目前的值。
您正在開發報表系統,想用特定符號分隔顯示各分區代碼,執行下列程式碼,輸出為?
print("Q", "W", "E", sep="=")
A. Q=W=E
B. Q W E
C. QWE
D. 產生錯誤
A. Q=W=E
print() 的 sep 參數會取代預設的空白分隔符,改用 "=" 分隔各個值。
公司的系統日誌模組要讓兩次 print 印在同一行,執行下列程式碼,輸出為?(用  代表換行)
print("Go", end=">>")
print("!")
A. Go>>!
B. Go!
C. Go!
D. 產生錯誤
A. Go>>!
print() 的 end 參數會取代預設的換行符號,這裡改成 ">>",所以兩次 print 會接在同一行。
您正在開發公司內部系統的「聯絡電話欄位」,讓使用者輸入資料,不論實際輸入什麼,執行下列程式碼後 print(type(...)) 顯示的型別一定是?
phone = input("聯絡電話:")
print(type(phone))
A. <class 'str'>
B. <class 'int'>
C. <class 'float'>
D. <class 'bool'>
A. <class 'str'>
input() 回傳值一律是字串;若程式碼中有 int()/float() 轉型,型別會依轉型函式而定。
電商後台系統要印出訂單金額明細。執行下列程式碼,輸出為?
order_id = "A1004"
amount = 280
print(f"{order_id}訂單金額{amount}元")
A. A1004訂單金額280元
B. A1004訂單金額amount元
C. order_id訂單金額280元
D. 產生錯誤
A. A1004訂單金額280元
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
您正在撰寫人資系統,需要公告每位員工的季度考核分數。執行下列程式碼,輸出為?
name = "翊庭"
score = 91
print(f"{name}本季考核{score}分")
A. 翊庭本季考核91分
B. 翊庭本季考核score分
C. name本季考核91分
D. 產生錯誤
A. 翊庭本季考核91分
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
下列選項中,何者「會自動換行」?(請選出所有正確答案)
A. print("Hi", end="")
B. print("Hi", end="\n")
C. print("Hi")
B. print("Hi", end="\n")
C. print("Hi")
正確答案為:print("Hi", end="\n"), print("Hi")。
請將左側項目與右側正確的說明配對:(print輸出情境 ↔ 結果)
左側項目
print("A","B")print("A","B",sep="-")print("A",end="")右側說明
A. A(不換行)
B. A B
C. A-B
1 → B:print("A","B") → A B
2 → C:print("A","B",sep="-") → A-B
3 → A:print("A",end="") → A(不換行)
配對詳見左右對應關係。
下列何者是合法的 Python 變數名稱?
A. if
B. 4#tag
C. total_num
D. 5bad
C. total_num
total_num 符合命名規則;其餘選項分別違反:不能數字開頭 / 不可用特殊符號或空白 / 不可使用保留字 if。
行內註解的正確寫法是?
A. x = 5 <!--設定初始值-->
B. x = 5 // 設定初始值
C. x = 5 ' 設定初始值
D. x = 5 # 設定初始值
D. x = 5 # 設定初始值
Python 使用 # 作為單行註解,''' '''或""" """作為多行註解;// 和 <!-- --> 是其他語言的寫法,Python不支援。
下列程式碼會發生什麼問題? def f(): return 5
A. SyntaxError(少了冒號)
B. IndentationError(函式主體少了縮排)
C. 正常執行,不會有問題
D. NameError(變數未定義)
B. IndentationError(函式主體少了縮排)
Python 用縮排(通常4個空白)表示程式區塊歸屬,同一區塊縮排必須一致,否則會產生 IndentationError。
下列選項中,何者是合法的 Python 變數名稱?(請選出所有正確答案)
A. x1
B. 1x
C. _x
D. x-1
E. x_1
A. x1
C. _x
E. x_1
合法的有:x1, _x, x_1;其餘違反命名規則(數字開頭/含空白或連字號/使用保留字)。
下列選項中,何者「屬於合法的模組匯入語法」?(請選出所有正確答案)
A. import math
B. from math import sqrt
C. include math
D. using math
A. import math
B. from math import sqrt
正確答案為:import math, from math import sqrt。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「定義質數判斷函式並呼叫測試」
A.
if n % i == 0:
B.
return False
C.
return True
D.
def is_prime(n):
E.
print(is_prime(7))
F.
for i in range(2, n):
D → F → A → B → C → E
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
print(is_prime(7))
正確順序如上(由上到下)。
下列選項中,執行後何者「會產生 IndexError」?(請選出所有正確答案)
A. [1,2,3][3]
B. [1,2,3][2]
C. [1,2,3][-1]
D. [1,2,3][-4]
A. [1,2,3][3]
D. [1,2,3][-4]
會出錯的是:[1,2,3][3], [1,2,3][-4]。
請將左側項目與右側正確的說明配對:(錯誤型別 ↔ 白話說明)
左側項目
TypeErrorNameErrorIndexErrorZeroDivisionError右側說明
A. 型別不相容的運算
B. 使用未定義的變數
C. 除數為0
D. 索引超出範圍
1 → A:TypeError → 型別不相容的運算
2 → B:NameError → 使用未定義的變數
3 → D:IndexError → 索引超出範圍
4 → C:ZeroDivisionError → 除數為0
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「修正elif順序錯誤,讓成績判斷正確」
A.
grade = "甲"
B.
grade = "丙"
C.
else:
D.
elif score >= 80:
E.
grade = "優"
F.
if score >= 90:
G.
score = 85
G → F → E → D → A → C → B
score = 85
if score >= 90:
grade = "優"
elif score >= 80:
grade = "甲"
else:
grade = "丙"
正確順序如上(由上到下)。
math.sqrt(16) 的結果為?
A. 4.0
B. 4
C. 16.0
D. 2.0
A. 4.0
sqrt() 回傳浮點數,結果為 4.0。