第 1 題
單選題資料型別與運算子若 a = 31,b = 7,執行 print(a // b, a % b) 的輸出為?
a, b = 31, 7
print(a // b, a % b)
A. 4 3
B. 4.43 3
C. 4 4.43
D. 3 4
正確答案
A. 4 3
為什麼?
31 // 7 = 4(整數除法,取商);31 % 7 = 3(取餘數)。
第 7 回以 38 題練習切片與逐步搜尋,包含中文字串取值、串列反向切片、奇數統計,以及不使用內建函式尋找最大值或最小值。應用題結合攝氏轉華氏、數字轉型與格式化輸出,並檢查字典缺少鍵時的 KeyError 處理。適合練習在每次迴圈後記錄變數狀態;每題附答案與文字解析。
若 a = 31,b = 7,執行 print(a // b, a % b) 的輸出為?
a, b = 31, 7
print(a // b, a % b)
A. 4 3
B. 4.43 3
C. 4 4.43
D. 3 4
A. 4 3
31 // 7 = 4(整數除法,取商);31 % 7 = 3(取餘數)。
執行下列程式碼,結果為?
print(4 >= 4 and 1 > 2)
A. False
B. True
C. None
D. 產生錯誤
A. False
逐步計算後,結果為 False。
執行下列程式碼,輸出為?
s = "我愛寫程式"
print(s[2:5])
A. 寫程式
B. 我愛寫程式
C. 產生錯誤
D. 愛寫程式
A. 寫程式
字串切片 s[2:5] 會取出索引 2 到 4 的字元(不含索引 5)。
執行下列程式碼,輸出為?
s = "aabbcc"
print(s.count("b"))
A. 2
B. 3
C. 1
D. 產生錯誤
A. 2
這段程式碼執行後的結果是 2。
nums = [1, 2, 3, 4, 5],執行以下程式碼後輸出為?
nums = [1, 2, 3, 4, 5]
print(nums[-2:])
A. [4, 5]
B. [1, 2, 3, 4, 5]
C. [5, 4]
D. 產生錯誤
A. [4, 5]
依序執行後,結果為 [4, 5]。
nums = [5, 10, 15],執行以下程式碼後輸出為?
nums = [5, 10, 15]
print(nums[::-1])
A. [15, 10, 5]
B. [5, 10, 15]
C. 產生錯誤
D. [15, 10, 5]0
A. [15, 10, 5]
依序執行後,結果為 [15, 10, 5]。
下列選項中,何者屬於「結果為3」?(請選出所有正確答案)
A. int(3.9)
B. round(3.9)
C. 3.9//1
D. "3.9"[0]
A. int(3.9)
C. 3.9//1
正確答案為:int(3.9), 3.9//1。
請將左側項目與右側正確的說明配對:(字典方法 ↔ 功能)
左側項目
.get().keys().values().pop()右側說明
A. 移除指定鍵值對
B. 取得所有鍵
C. 安全取值不會報錯
D. 取得所有值
1 → C:.get() → 安全取值不會報錯
2 → B:.keys() → 取得所有鍵
3 → D:.values() → 取得所有值
4 → A:.pop() → 移除指定鍵值對
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「將兩個數字轉型後相加」
A.
print(a + b)
B.
a = int("10")
C.
b = int("20")
B → C → A
a = int("10")
b = int("20")
print(a + b)
正確順序如上(由上到下)。
公司的員工績效考核系統要把分數轉換成等第:90分以上「優」、80~89分「甲」、70~79分「乙」、其餘「丙」。某員工本季考核分數是 91 分,執行下列程式碼,輸出的等第為?
score = 91
if score >= 90:
grade = '優'
elif score >= 80:
grade = '甲'
elif score >= 70:
grade = '乙'
else:
grade = '丙'
print(grade)
A. 優
B. 甲
C. 乙
D. 丙
A. 優
score = 91,由上往下第一個成立的條件決定結果,答案是「優」。
您正在撰寫一支「網路延遲監控系統」的判斷程式,需求是:latency >= 800 判定為「延遲嚴重」,latency >= 300(未滿800)判定為「延遲偏高」,其餘為「正常」。若 latency = 150,執行下列程式碼,輸出的判定結果為?
latency = 150
if latency >= 800:
result = '延遲嚴重'
elif latency >= 300:
result = '延遲偏高'
else:
result = '正常'
print(result)
A. 正常
B. 延遲嚴重
C. 延遲偏高
D. 產生錯誤
A. 正常
latency = 150,依序判斷後結果為「正常」。
公司人資系統的升遷規則:年資(years,年)需 >= 2 且績效考核分數(rating)需 >= 80 才符合升遷資格。若 years = 0、rating = 50,執行下列程式碼,輸出結果為?
years = 0
rating = 50
if years >= 2 and rating >= 80:
print('符合升遷資格')
else:
print('不符合升遷資格')
A. 不符合升遷資格
B. 符合升遷資格
C. 產生錯誤
D. None
A. 不符合升遷資格
and 需要兩個條件同時成立才是 True,此例 years>=2 為False、rating>=80 為False,所以結果是「不符合升遷資格」。
您正在為公司教育訓練系統撰寫巢狀判斷程式,評定測驗結果:先看 score 是否及格(>=60),及格者再看 has_bonus 是否為 True 決定是否額外加分。若 score = 95、has_bonus = True,執行下列程式碼,輸出為?
score = 95
has_bonus = True
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,>= 包含等於的情況,所以條件成立,輸出「達標」。
您正在開發一支自動化報表腳本,需要計算編號 2 到 19(每次跳 2)之間所有訂單編號的總和。執行以下程式碼,print(total) 的輸出為?
total = 0
for i in range(2, 20, 2):
total += i
print(total)
A. 90
B. 92
C. 88
D. 180
A. 90
range(2, 20, 2) 會產生從 2 開始、每次加 2、直到小於 20 為止的數列,加總結果為 90。
公司的系統日誌分析腳本要掃描編號 1 到 15 的紀錄,統計其中有幾筆屬於「奇數」。執行以下程式碼,print(count) 的輸出為?
count = 0
for i in range(1, 16):
if i % 2 == 1:
count += 1
print(count)
A. 8
B. 9
C. 7
D. 產生錯誤
A. 8
迴圈逐一檢查 1 到 15 之間符合「奇數」的數字,總共有 8 個。
您正在開發一支業績分析程式,nums = [50, 30, 80, 10, 60] 是各分店本月業績(萬元),需要找出業績最高的分店數字(不能用 max()),執行以下程式碼,輸出為?
nums = [50, 30, 80, 10, 60]
biggest = nums[0]
for n in nums:
if n > biggest:
biggest = n
print(biggest)
A. 80
B. 10
C. 81
D. 230
A. 80
迴圈逐一比較,只要目前的數字比 biggest 大就更新 biggest,最後得到最大值 80。
下列選項中,何者「至少會執行迴圈本體一次的寫法(視i初始值而定,但語法上可能執行)」?(請選出所有正確答案)
A. while i < 10:
B. while True:
C. for i in []:
D. for i in range(0):
A. while i < 10:
B. while True:
正確答案為:while i < 10:, while True:。
請將左側項目與右側正確的說明配對:(迴圈變數行為 ↔ 說明)
左側項目
for i in range(n)while條件變數沒更新break後continue後右側說明
A. 造成無窮迴圈
B. i從0開始到n-1
C. 跳回迴圈開頭檢查條件
D. 不會再檢查迴圈條件
1 → B:for i in range(n) → i從0開始到n-1
2 → A:while條件變數沒更新 → 造成無窮迴圈
3 → D:break後 → 不會再檢查迴圈條件
4 → C:continue後 → 跳回迴圈開頭檢查條件
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「從串列中找出最小值(不使用min())」
A.
smallest = n
B.
if n < smallest:
C.
nums = [7, 2, 9, 4]
D.
smallest = nums[0]
E.
print(smallest)
F.
for n in nums:
C → D → F → B → A → E
nums = [7, 2, 9, 4]
smallest = nums[0]
for n in nums:
if n < smallest:
smallest = n
print(smallest)
正確順序如上(由上到下)。
公司人事系統要產生員工資料卡,name 是姓名、years 是年資。執行下列程式碼,輸出為?
name = "劉雅婷"
years = 13
print(f"{name}的年資是{years}年")
A. 劉雅婷的年資是13年
B. 劉雅婷的年資是years年
C. name的年資是13年
D. 產生錯誤
A. 劉雅婷的年資是13年
f-string 會把 {} 裡的變數名稱直接替換成變數目前的值。
您正在開發報表系統,想用特定符號分隔顯示各分區代碼,執行下列程式碼,輸出為?
print("Q1", "Q2", "Q3", sep="→")
A. Q1→Q2→Q3
B. Q1 Q2 Q3
C. Q1Q2Q3
D. 產生錯誤
A. Q1→Q2→Q3
print() 的 sep 參數會取代預設的空白分隔符,改用 "→" 分隔各個值。
公司的系統日誌模組要讓兩次 print 印在同一行,執行下列程式碼,輸出為?(用  代表換行)
print("讚", end="**")
print("!")
A. 讚**!
B. 讚!
C. 讚!
D. 產生錯誤
A. 讚**!
print() 的 end 參數會取代預設的換行符號,這裡改成 "**",所以兩次 print 會接在同一行。
您正在開發公司內部系統的「配送城市欄位」,讓使用者輸入資料,不論實際輸入什麼,執行下列程式碼後 print(type(...)) 顯示的型別一定是?
city = input("配送城市:")
print(type(city))
A. <class 'str'>
B. <class 'int'>
C. <class 'float'>
D. <class 'bool'>
A. <class 'str'>
input() 回傳值一律是字串;若程式碼中有 int()/float() 轉型,型別會依轉型函式而定。
電商後台系統要印出訂單金額明細。執行下列程式碼,輸出為?
order_id = "A1007"
amount = 280
print(f"{order_id}訂單金額{amount}元")
A. A1007訂單金額280元
B. A1007訂單金額amount元
C. order_id訂單金額280元
D. 產生錯誤
A. A1007訂單金額280元
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
您正在撰寫人資系統,需要公告每位員工的季度考核分數。執行下列程式碼,輸出為?
name = "愷倫"
score = 91
print(f"{name}本季考核{score}分")
A. 愷倫本季考核91分
B. 愷倫本季考核score分
C. name本季考核91分
D. 產生錯誤
A. 愷倫本季考核91分
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
下列選項中,何者「會等待使用者輸入資料」?(請選出所有正確答案)
A. input("提示:")
B. int(input("提示:"))
C. print("提示:")
A. input("提示:")
B. int(input("提示:"))
正確答案為:input("提示:"), int(input("提示:"))。
請將左側項目與右側正確的說明配對:(字串格式化情境 ↔ 寫法)
左側項目
把姓名和分數組成句子把數字轉成字串再串接取得字串長度右側說明
A. str(score) + "分"
B. len(s)
C. f"{name}考了{score}分"
1 → C:把姓名和分數組成句子 → f"{name}考了{score}分"
2 → A:把數字轉成字串再串接 → str(score) + "分"
3 → B:取得字串長度 → len(s)
配對詳見左右對應關係。
下列何者是合法的 Python 變數名稱?
A. import
B. _flag
C. 8bad
D. my-7
B. _flag
_flag 符合命名規則;其餘選項分別違反:不能數字開頭 / 不可用特殊符號或空白 / 不可使用保留字 import。
下列何者不是合法的 Python 註解寫法?
A. """ 註解 """
B. ''' 註解 '''
C. // 註解
D. # 註解
C. // 註解
Python 使用 # 作為單行註解,''' '''或""" """作為多行註解;// 和 <!-- --> 是其他語言的寫法,Python不支援。
下列敘述何者正確?
A. Python也是用大括號{}代表區塊,縮排只是美觀用途
B. 同一區塊可以混用空白與Tab,不影響執行
C. 同一個區塊內的程式碼,縮排的空白數量必須一致
D. 縮排空白數量不需要一致,直譯器會自動判斷
C. 同一個區塊內的程式碼,縮排的空白數量必須一致
Python 用縮排(通常4個空白)表示程式區塊歸屬,同一區塊縮排必須一致,否則會產生 IndentationError。
下列選項中,何者是合法的 Python 變數名稱?(請選出所有正確答案)
A. data1
B. data_1
C. 1data
D. data#1
E. while
A. data1
B. data_1
合法的有:data1, data_1;其餘違反命名規則(數字開頭/含空白或連字號/使用保留字)。
下列選項中,何者「屬於合法的函式參數寫法」?(請選出所有正確答案)
A. def f(a, b):
B. def f(a, b=1):
C. def f(a=1, b):
D. def f(*args):
A. def f(a, b):
B. def f(a, b=1):
D. def f(*args):
正確答案為:def f(a, b):, def f(a, b=1):, def f(*args):。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「定義攝氏轉華氏的函式並呼叫」
A.
print(to_fahrenheit(25))
B.
def to_fahrenheit(c):
C.
return c * 9 / 5 + 32
B → C → A
def to_fahrenheit(c):
return c * 9 / 5 + 32
print(to_fahrenheit(25))
正確順序如上(由上到下)。
下列選項中,執行後何者「會產生 TypeError」?(請選出所有正確答案)
A. "3"*2
B. "3"-2
C. 3-"2"
D. 3*"2"
B. "3"-2
C. 3-"2"
會出錯的是:"3"-2, 3-"2"。
請將左側項目與右側正確的說明配對:(錯誤訊息關鍵字 ↔ 對應錯誤)
左側項目
division by zeroinvalid literal for int()list index out of rangeis not defined右側說明
A. ZeroDivisionError
B. IndexError
C. ValueError
D. NameError
1 → A:division by zero → ZeroDivisionError
2 → C:invalid literal for int() → ValueError
3 → B:list index out of range → IndexError
4 → D:is not defined → NameError
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「用try/except處理字典取值可能發生的錯誤」
A.
print(d["b"])
B.
d = {"a": 1}
C.
print("鍵不存在")
D.
try:
E.
except KeyError:
B → D → A → E → C
d = {"a": 1}
try:
print(d["b"])
except KeyError:
print("鍵不存在")
正確順序如上(由上到下)。
math.pi 代表的是?
A. 圓周率π
B. 自然對數e
C. 無限大
D. 0
A. 圓周率π
math.pi 是 Python 內建的圓周率常數。