第 1 題
單選題資料型別與運算子執行下列程式碼,結果為?
print("go" + "!" * 3)
A. go!!!
B. !!!og
C. go!!!!
D. 產生錯誤
正確答案
A. go!!!
為什麼?
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "go!!!"。
第 8 回共 38 題,串連次方運算的優先順序、負索引切片、串列元素更新與索引查找,並複習 tuple 的建立方式。流程題包含巢狀迴圈、重試計數與倒數排列,另搭配函式說明文件、較大值函式及及格條件修正。作答時可留意比較運算子的方向,以及變數在迴圈中的更新時機;每題附答案與文字解析。
執行下列程式碼,結果為?
print("go" + "!" * 3)
A. go!!!
B. !!!og
C. go!!!!
D. 產生錯誤
A. go!!!
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "go!!!"。
執行下列程式碼,結果為?(提示:留意運算子優先順序)
print(2 * 3 ** 2)
A. 18
B. 19
C. 17
D. 36
A. 18
Python 的運算子優先順序是 ** 最高,接著是 * 和 /,最後是 + 和 -,括號會優先運算。結果為 18。
執行下列程式碼,結果為?
print(len("one two three four".split()))
A. 4
B. 5
C. 3
D. 產生錯誤
A. 4
.split() 會依指定符號把字串切成 list,共切出 4 個元素。
執行下列程式碼,輸出為?
s = "abcdef"
print(s[-5:-2])
A. bcd
B. abcdef
C. 產生錯誤
D. BCD
A. bcd
負數索引從字串尾端開始數(-1 是最後一個字元),這段程式碼的結果是 "bcd"。
nums = [3, 6, 9],執行以下程式碼後輸出為?
nums = [3, 6, 9]
nums[0] = 100
print(nums)
A. [100, 6, 9]
B. [3, 6, 9]
C. [9, 6, 100]
D. [6, 9, 100]
A. [100, 6, 9]
依序執行後,結果為 [100, 6, 9]。
nums = [1, 3, 5, 7],執行以下程式碼後輸出為?
nums = [1, 3, 5, 7]
print(nums.index(5))
A. 2
B. [1, 3, 5, 7]
C. 3
D. 1
A. 2
依序執行後,結果為 2。
下列選項中,何者屬於「結果為True」?(請選出所有正確答案)
A. 5 > 3
B. 5 == 5.0
C. "5"==5
D. 5>=5
A. 5 > 3
B. 5 == 5.0
D. 5>=5
正確答案為:5 > 3, 5 == 5.0, 5>=5。
請將左側項目與右側正確的說明配對:(集合特性 ↔ 說明)
左側項目
元素不重複沒有順序.add()in右側說明
A. 加入元素
B. 檢查元素是否存在
C. set不能用索引取值
D. set的核心特性
1 → D:元素不重複 → set的核心特性
2 → C:沒有順序 → set不能用索引取值
3 → A:.add() → 加入元素
4 → B:in → 檢查元素是否存在
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「建立tuple並印出其長度與內容」
A.
t = (1, 2, 3)
B.
print(length)
C.
length = len(t)
D.
print(t)
A → C → B → D
t = (1, 2, 3)
length = len(t)
print(length)
print(t)
正確順序如上(由上到下)。
公司的員工績效考核系統要把分數轉換成等第:90分以上「優」、80~89分「甲」、70~79分「乙」、其餘「丙」。某員工本季考核分數是 78 分,執行下列程式碼,輸出的等第為?
score = 78
if score >= 90:
grade = '優'
elif score >= 80:
grade = '甲'
elif score >= 70:
grade = '乙'
else:
grade = '丙'
print(grade)
A. 乙
B. 優
C. 甲
D. 丙
A. 乙
score = 78,由上往下第一個成立的條件決定結果,答案是「乙」。
您正在撰寫一支「倉儲庫存管理系統」的判斷程式,需求是:stock >= 10 判定為「庫存充足」,stock >= 3(未滿10)判定為「庫存偏低」,其餘為「缺貨」。若 stock = 15,執行下列程式碼,輸出的判定結果為?
stock = 15
if stock >= 10:
result = '庫存充足'
elif stock >= 3:
result = '庫存偏低'
else:
result = '缺貨'
print(result)
A. 庫存充足
B. 庫存偏低
C. 缺貨
D. 產生錯誤
A. 庫存充足
stock = 15,依序判斷後結果為「庫存充足」。
公司人資系統的升遷規則:年資(years,年)需 >= 2 且績效考核分數(rating)需 >= 80 才符合升遷資格。若 years = 3、rating = 78,執行下列程式碼,輸出結果為?
years = 3
rating = 78
if years >= 2 and rating >= 80:
print('符合升遷資格')
else:
print('不符合升遷資格')
A. 不符合升遷資格
B. 符合升遷資格
C. 產生錯誤
D. None
A. 不符合升遷資格
and 需要兩個條件同時成立才是 True,此例 years>=2 為True、rating>=80 為False,所以結果是「不符合升遷資格」。
您正在為公司教育訓練系統撰寫巢狀判斷程式,評定測驗結果:先看 score 是否及格(>=60),及格者再看 has_bonus 是否為 True 決定是否額外加分。若 score = 60、has_bonus = False,執行下列程式碼,輸出為?
score = 60
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 = 0,判斷條件是 x > 0,執行下列程式碼,輸出為?(提醒:注意 > 是否包含等於的情況)
x = 0
if x > 0:
print('未達標')
else:
print('另一種結果')
A. 另一種結果
B. 未達標
C. 產生錯誤
D. None
A. 另一種結果
x = 0、門檻 = 0,> 不包含等於的情況,所以條件不成立,輸出「另一種結果」。
公司的系統通知模組要把 words = ['連線', '逾時', '自動', '重試'] 這幾個片段組成一則完整的訊息字串,執行以下程式碼,輸出為?
words = ['連線', '逾時', '自動', '重試']
result = ''
for w in words:
result += w
print(result)
A. 連線逾時自動重試
B. 連線 逾時 自動 重試
C. 重試自動逾時連線
D. 產生錯誤
A. 連線逾時自動重試
迴圈逐一把每個元素用 += 接到 result 後面,最後得到 "連線逾時自動重試"。
您正在開發一支自動化測試腳本,用巢狀迴圈跑所有組合:外層跑 4 種瀏覽器、內層每種瀏覽器都測 2 個頁面,執行以下程式碼,count 最後代表總測試次數,其值為?
count = 0
for i in range(4):
for j in range(2):
count += 1
print(count)
A. 8
B. 6
C. 10
D. 7
A. 8
外層執行 4 次,內層每次執行 2 次,總共執行 4 × 2 = 8 次。
公司系統的 API 重試機制規則:計數器 i 從 0 開始,每次增加 2,直到不小於 10 為止才停止重試,count 記錄總共重試了幾次。執行以下程式碼,輸出為?
i = 0
count = 0
while i < 10:
count += 1
i += 2
print(count)
A. 5
B. 6
C. 4
D. 產生錯誤(無窮迴圈)
A. 5
迴圈每次讓 i 增加 2,總共執行了 5 次才符合結束條件。
下列選項中,何者「正確描述迴圈/函式關鍵字」?(請選出所有正確答案)
A. break跳出整個迴圈
B. continue跳過本次
C. pass什麼都不做
D. return結束函式
E. elif用來提前結束整個程式
A. break跳出整個迴圈
B. continue跳過本次
C. pass什麼都不做
D. return結束函式
正確答案為:break跳出整個迴圈, continue跳過本次, pass什麼都不做, return結束函式。
請將左側項目與右側正確的說明配對:(條件式 ↔ 執行結果)
左側項目
if 5>3:if 3>5:if 5>3 and 3>5:if 5>3 or 3>5:右側說明
A. and需兩者皆真,不會執行
B. 條件成立,會執行
C. or只需一個真,會執行
D. 條件不成立,不會執行
1 → B:if 5>3: → 條件成立,會執行
2 → D:if 3>5: → 條件不成立,不會執行
3 → A:if 5>3 and 3>5: → and需兩者皆真,不會執行
4 → C:if 5>3 or 3>5: → or只需一個真,會執行
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「倒數計時從5數到1」
A.
print(i)
B.
i -= 1
C.
i = 5
D.
while i >= 1:
C → D → A → B
i = 5
while i >= 1:
print(i)
i -= 1
正確順序如上(由上到下)。
公司人事系統要產生員工資料卡,name 是姓名、years 是年資。執行下列程式碼,輸出為?
name = "蔡承翰"
years = 12
print(f"{name}的年資是{years}年")
A. 蔡承翰的年資是12年
B. 蔡承翰的年資是years年
C. name的年資是12年
D. 產生錯誤
A. 蔡承翰的年資是12年
f-string 會把 {} 裡的變數名稱直接替換成變數目前的值。
您正在開發報表系統,想用特定符號分隔顯示各分區代碼,執行下列程式碼,輸出為?
print("a", "b", "c", sep="_")
A. a_b_c
B. a b c
C. abc
D. 產生錯誤
A. a_b_c
print() 的 sep 參數會取代預設的空白分隔符,改用 "_" 分隔各個值。
公司的系統日誌模組要讓兩次 print 印在同一行,執行下列程式碼,輸出為?(用  代表換行)
print("繼續", end="...")
print("!")
A. 繼續...!
B. 繼續!
C. 繼續!
D. 產生錯誤
A. 繼續...!
print() 的 end 參數會取代預設的換行符號,這裡改成 "...",所以兩次 print 會接在同一行。
您正在開發公司內部系統的「報表年份欄位」,讓使用者輸入資料,不論實際輸入什麼,執行下列程式碼後 print(type(...)) 顯示的型別一定是?
year = int(input("報表年份:"))
print(type(year))
A. <class 'int'>
B. <class 'str'>
C. <class 'float'>
D. <class 'bool'>
A. <class 'int'>
input() 回傳值一律是字串;若程式碼中有 int()/float() 轉型,型別會依轉型函式而定。
電商後台系統要印出訂單金額明細。執行下列程式碼,輸出為?
order_id = "A1008"
amount = 270
print(f"{order_id}訂單金額{amount}元")
A. A1008訂單金額270元
B. A1008訂單金額amount元
C. order_id訂單金額270元
D. 產生錯誤
A. A1008訂單金額270元
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
您正在撰寫人資系統,需要公告每位員工的季度考核分數。執行下列程式碼,輸出為?
name = "姿穎"
score = 84
print(f"{name}本季考核{score}分")
A. 姿穎本季考核84分
B. 姿穎本季考核score分
C. name本季考核84分
D. 產生錯誤
A. 姿穎本季考核84分
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
下列選項中,何者「可以正確把整數n跟文字「分」組合成字串」?(請選出所有正確答案)
A. f"{n}分"
B. str(n)+"分"
C. "{}分".format(n)
D. n+"分"
A. f"{n}分"
B. str(n)+"分"
C. "{}分".format(n)
正確答案為:f"{n}分", str(n)+"分", "{}分".format(n)。
請將左側項目與右側正確的說明配對:(input()情境 ↔ 正確處理方式)
左側項目
要讀取使用者的年齡(整數)要讀取使用者的身高(小數)要讀取使用者的名字(文字)右側說明
A. age = int(input())
B. height = float(input())
C. name = input()
1 → A:要讀取使用者的年齡(整數) → age = int(input())
2 → B:要讀取使用者的身高(小數) → height = float(input())
3 → C:要讀取使用者的名字(文字) → name = input()
配對詳見左右對應關係。
下列何者是合法的 Python 變數名稱?
A. else
B. 9bad
C. my 8
D. value_9
D. value_9
value_9 符合命名規則;其餘選項分別違反:不能數字開頭 / 不可用特殊符號或空白 / 不可使用保留字 else。
函式說明文件(docstring)常用哪種寫法?
A. // 說明這個函式的用途
B. <doc>說明</doc>
C. """說明這個函式的用途"""
D. # 說明這個函式的用途
C. """說明這個函式的用途"""
Python 使用 # 作為單行註解,''' '''或""" """作為多行註解;// 和 <!-- --> 是其他語言的寫法,Python不支援。
下列程式碼會發生什麼問題? while True: break print('end')
A. 正常執行,不會有問題
B. IndentationError(縮排不一致)
C. NameError(變數未定義)
D. SyntaxError(少了冒號)
B. IndentationError(縮排不一致)
Python 用縮排(通常4個空白)表示程式區塊歸屬,同一區塊縮排必須一致,否則會產生 IndentationError。
下列選項中,何者是合法的 Python 變數名稱?(請選出所有正確答案)
A. temp9
B. 9temp
C. temp_9
D. temp-9
E. and
A. temp9
C. temp_9
合法的有:temp9, temp_9;其餘違反命名規則(數字開頭/含空白或連字號/使用保留字)。
下列選項中,何者「屬於合法的類別定義寫法(大小寫視為不同名稱但語法皆合法)」?(請選出所有正確答案)
A. class A:
B. Class A:
C. class A():
D. class a:
A. class A:
C. class A():
D. class a:
正確答案為:class A:, class A():, class a:。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「定義函式回傳兩數中較大值並呼叫」
A.
print(bigger(3, 9))
B.
if a > b:
C.
def bigger(a, b):
D.
return a
E.
return b
C → B → D → E → A
def bigger(a, b):
if a > b:
return a
return b
print(bigger(3, 9))
正確順序如上(由上到下)。
下列選項中,執行後何者「會產生 KeyError」?(請選出所有正確答案)
A. {"x":1}["y"]
B. {"x":1}.get("y")
C. {"x":1}["x"]
A. {"x":1}["y"]
會出錯的是:{"x":1}["y"]。
請將左側項目與右側正確的說明配對:(除錯情境 ↔ 建議做法)
左側項目
不確定變數目前的值程式邏輯錯誤但沒有報錯使用者輸入可能造成錯誤想避免程式因錯誤而中斷右側說明
A. 用print()印出來確認
B. 加上except攔截例外
C. 逐行追蹤執行流程
D. 用try/except包起來
1 → A:不確定變數目前的值 → 用print()印出來確認
2 → C:程式邏輯錯誤但沒有報錯 → 逐行追蹤執行流程
3 → D:使用者輸入可能造成錯誤 → 用try/except包起來
4 → B:想避免程式因錯誤而中斷 → 加上except攔截例外
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「修正比較運算子方向錯誤,讓及格判斷正確」
A.
if score >= 60:
B.
else:
C.
print("及格")
D.
score = 75
E.
print("不及格")
D → A → C → B → E
score = 75
if score >= 60:
print("及格")
else:
print("不及格")
正確順序如上(由上到下)。
下列何者是正確的模組匯入語法?
A. import math
B. include math
C. using math
D. require math
A. import math
Python 使用 import 關鍵字匯入模組。