第 1 題
單選題資料型別與運算子執行下列程式碼,結果為?
print("ab" + "cd" * 2)
A. abcdcd
B. dcdcba
C. abcdcdd
D. 產生錯誤
正確答案
A. abcdcd
為什麼?
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "abcdcd"。
第 10 回共 38 題,綜合練習字串串接與分割、次方運算,以及 sorted() 產生排序結果後原串列的內容。流程題包含巢狀迴圈、跳過指定倍數與偶數判斷函式,並透過 BMI 計算修正、字典取值及 ValueError 辨識檢查常見失誤。最後複習 math.floor() 的取整行為;每題附答案與文字解析,可用於整回複習與錯題整理。
執行下列程式碼,結果為?
print("ab" + "cd" * 2)
A. abcdcd
B. dcdcba
C. abcdcdd
D. 產生錯誤
A. abcdcd
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "abcdcd"。
執行下列程式碼,結果為?(提示:留意運算子優先順序)
print((10 - 2) ** 2)
A. 64
B. 65
C. 63
D. 128
A. 64
Python 的運算子優先順序是 ** 最高,接著是 * 和 /,最後是 + 和 -,括號會優先運算。結果為 64。
執行下列程式碼,結果為?
print(len("x/y/z".split("/")))
A. 3
B. 4
C. 2
D. 產生錯誤
A. 3
.split() 會依指定符號把字串切成 list,共切出 3 個元素。
執行下列程式碼,輸出為?
s = "python3"
print(s[-1:])
A. 3
B. python3
C. 產生錯誤
D. 33
A. 3
負數索引從字串尾端開始數(-1 是最後一個字元),這段程式碼的結果是 "3"。
nums = [10, 20],執行以下程式碼後輸出為?
nums = [10, 20]
nums += [30]
print(nums)
A. [10, 20, 30]
B. [10, 20]
C. [30, 20, 10]
D. 產生錯誤
A. [10, 20, 30]
依序執行後,結果為 [10, 20, 30]。
nums = [4, 1, 3, 2],執行以下程式碼後輸出為?
nums = [4, 1, 3, 2]
print(sorted(nums))
print(nums)
A. [1, 2, 3, 4] [4, 1, 3, 2]
B. [4, 1, 3, 2]
C. 產生錯誤
D. [1, 2, 3, 4] [4, 1, 3, 2]0
A. [1, 2, 3, 4] [4, 1, 3, 2]
依序執行後,結果為 [1, 2, 3, 4] [4, 1, 3, 2]。
下列選項中,何者屬於「int相關型別」?(請選出所有正確答案)
A. type(5)
B. type(5.0)
C. type('5')
D. type(True)
A. type(5)
D. type(True)
正確答案為:type(5), type(True)。
請將左側項目與右側正確的說明配對:(運算結果 ↔ 型別)
左側項目
3/23//2"3"+"3"3.0+1右側說明
A. float
B. str
C. float(int與float相加會轉為float)
D. int
1 → A:3/2 → float
2 → D:3//2 → int
3 → B:"3"+"3" → str
4 → C:3.0+1 → float(int與float相加會轉為float)
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「計算字串中某字元出現的次數」
A.
count = s.count("a")
B.
print(count)
C.
s = "banana"
C → A → B
s = "banana"
count = s.count("a")
print(count)
正確順序如上(由上到下)。
公司的員工績效考核系統要把分數轉換成等第:90分以上「優」、80~89分「甲」、70~79分「乙」、其餘「丙」。某員工本季考核分數是 100 分,執行下列程式碼,輸出的等第為?
score = 100
if score >= 90:
grade = '優'
elif score >= 80:
grade = '甲'
elif score >= 70:
grade = '乙'
else:
grade = '丙'
print(grade)
A. 優
B. 甲
C. 乙
D. 丙
A. 優
score = 100,由上往下第一個成立的條件決定結果,答案是「優」。
您正在撰寫一支「機房溫度監控系統」的判斷程式,需求是:temp >= 80 判定為「過熱」,temp >= 60(未滿80)判定為「偏高」,其餘為「正常」。若 temp = 65,執行下列程式碼,輸出的判定結果為?
temp = 65
if temp >= 80:
result = '過熱'
elif temp >= 60:
result = '偏高'
else:
result = '正常'
print(result)
A. 偏高
B. 過熱
C. 正常
D. 產生錯誤
A. 偏高
temp = 65,依序判斷後結果為「偏高」。
公司人資系統的升遷規則:年資(years,年)需 >= 2 且績效考核分數(rating)需 >= 80 才符合升遷資格。若 years = 2、rating = 79,執行下列程式碼,輸出結果為?
years = 2
rating = 79
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 = 100、has_bonus = False,執行下列程式碼,輸出為?
score = 100
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 = 50,判斷條件是 x > 50,執行下列程式碼,輸出為?(提醒:注意 > 是否包含等於的情況)
x = 50
if x > 50:
print('不符合')
else:
print('另一種結果')
A. 另一種結果
B. 不符合
C. 產生錯誤
D. None
A. 另一種結果
x = 50、門檻 = 50,> 不包含等於的情況,所以條件不成立,輸出「另一種結果」。
公司的系統通知模組要把 words = ['資料', '同步', '作業', '開始'] 這幾個片段組成一則完整的訊息字串,執行以下程式碼,輸出為?
words = ['資料', '同步', '作業', '開始']
result = ''
for w in words:
result += w
print(result)
A. 資料同步作業開始
B. 資料 同步 作業 開始
C. 開始作業同步資料
D. 產生錯誤
A. 資料同步作業開始
迴圈逐一把每個元素用 += 接到 result 後面,最後得到 "資料同步作業開始"。
您正在開發一支自動化測試腳本,用巢狀迴圈跑所有組合:外層跑 3 種瀏覽器、內層每種瀏覽器都測 3 個頁面,執行以下程式碼,count 最後代表總測試次數,其值為?
count = 0
for i in range(3):
for j in range(3):
count += 1
print(count)
A. 9
B. 6
C. 11
D. 8
A. 9
外層執行 3 次,內層每次執行 3 次,總共執行 3 × 3 = 9 次。
公司系統的 API 重試機制規則:計數器 i 從 5 開始,每次減少 1,直到小於 0 為止才停止重試,count 記錄總共重試了幾次。執行以下程式碼,輸出為?
i = 5
count = 0
while i > 0:
count += 1
i += -1
print(count)
A. 5
B. 6
C. 4
D. 產生錯誤(無窮迴圈)
A. 5
迴圈每次讓 i 減少 1,總共執行了 5 次才符合結束條件。
下列選項中,何者「屬於條件判斷式(非賦值)」?(請選出所有正確答案)
A. x > 0 and y > 0
B. x > 0 or y > 0
C. not (x > 0)
D. x = 0
A. x > 0 and y > 0
B. x > 0 or y > 0
C. not (x > 0)
正確答案為:x > 0 and y > 0, x > 0 or y > 0, not (x > 0)。
請將左側項目與右側正確的說明配對:(程式片段 ↔ 用途)
左側項目
累加總和計數符合條件的次數找最大值字串串接右側說明
A. count += 1
B. if n > biggest: biggest = n
C. result += w
D. total += i
1 → D:累加總和 → total += i
2 → A:計數符合條件的次數 → count += 1
3 → B:找最大值 → if n > biggest: biggest = n
4 → C:字串串接 → result += w
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「跳過3的倍數,其餘印出」
A.
print(i)
B.
if i % 3 == 0:
C.
continue
D.
for i in range(1, 11):
D → B → C → A
for i in range(1, 11):
if i % 3 == 0:
continue
print(i)
正確順序如上(由上到下)。
公司人事系統要產生員工資料卡,name 是姓名、years 是年資。執行下列程式碼,輸出為?
name = "許彥廷"
years = 13
print(f"{name}的年資是{years}年")
A. 許彥廷的年資是13年
B. 許彥廷的年資是years年
C. name的年資是13年
D. 產生錯誤
A. 許彥廷的年資是13年
f-string 會把 {} 裡的變數名稱直接替換成變數目前的值。
您正在開發報表系統,想用特定符號分隔顯示各分區代碼,執行下列程式碼,輸出為?
print("紅", "黃", "藍", sep=">")
A. 紅>黃>藍
B. 紅 黃 藍
C. 紅黃藍
D. 產生錯誤
A. 紅>黃>藍
print() 的 sep 參數會取代預設的空白分隔符,改用 ">" 分隔各個值。
公司的系統日誌模組要讓兩次 print 印在同一行,執行下列程式碼,輸出為?(用  代表換行)
print("開始", end=">>>")
print("!")
A. 開始>>>!
B. 開始!
C. 開始!
D. 產生錯誤
A. 開始>>>!
print() 的 end 參數會取代預設的換行符號,這裡改成 ">>>",所以兩次 print 會接在同一行。
您正在開發公司內部系統的「員工編號欄位」,讓使用者輸入資料,不論實際輸入什麼,執行下列程式碼後 print(type(...)) 顯示的型別一定是?
id_str = input("員工編號:")
print(type(id_str))
A. <class 'str'>
B. <class 'int'>
C. <class 'float'>
D. <class 'bool'>
A. <class 'str'>
input() 回傳值一律是字串;若程式碼中有 int()/float() 轉型,型別會依轉型函式而定。
電商後台系統要印出訂單金額明細。執行下列程式碼,輸出為?
order_id = "A1010"
amount = 280
print(f"{order_id}訂單金額{amount}元")
A. A1010訂單金額280元
B. A1010訂單金額amount元
C. order_id訂單金額280元
D. 產生錯誤
A. A1010訂單金額280元
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
您正在撰寫人資系統,需要公告每位員工的季度考核分數。執行下列程式碼,輸出為?
name = "靖婕"
score = 91
print(f"{name}本季考核{score}分")
A. 靖婕本季考核91分
B. 靖婕本季考核score分
C. name本季考核91分
D. 產生錯誤
A. 靖婕本季考核91分
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
下列選項中,何者「輸出為 1-2」?(請選出所有正確答案)
A. print(1,2,sep="-")
B. print("1-2")
C. print("1","2",sep="-")
A. print(1,2,sep="-")
C. print("1","2",sep="-")
正確答案為:print(1,2,sep="-"), print("1","2",sep="-")。
請將左側項目與右側正確的說明配對:(資料型別 ↔ 對應的input寫法)
左側項目
strintfloat右側說明
A. input()
B. float(input())
C. int(input())
1 → A:str → input()
2 → C:int → int(input())
3 → B:float → float(input())
配對詳見左右對應關係。
下列何者是合法的 Python 變數名稱?
A. 10.val
B. 11bad
C. count_x
D. True
C. count_x
count_x 符合命名規則;其餘選項分別違反:不能數字開頭 / 不可用特殊符號或空白 / 不可使用保留字 True。
要註解掉一整段程式碼,較常見的做法是?
A. <!-- 多行程式碼 -->
B. // 多行程式碼
C. * 多行程式碼 *
D. ''' 多行程式碼 '''
D. ''' 多行程式碼 '''
Python 使用 # 作為單行註解,''' '''或""" """作為多行註解;// 和 <!-- --> 是其他語言的寫法,Python不支援。
下列程式碼執行時會如何? if 5 > 3: print('yes') else: print('no')
A. 產生 SyntaxError
B. 正常執行,輸出 yes
C. 產生 IndentationError
D. 沒有任何輸出
B. 正常執行,輸出 yes
Python 用縮排(通常4個空白)表示程式區塊歸屬,同一區塊縮排必須一致,否則會產生 IndentationError。
下列選項中,何者是合法的 Python 變數名稱?(請選出所有正確答案)
A. k1
B. 1k
C. _k1
D. k 1
E. return
A. k1
C. _k1
合法的有:k1, _k1;其餘違反命名規則(數字開頭/含空白或連字號/使用保留字)。
下列選項中,何者「屬於合法的Python變數賦值寫法」?(請選出所有正確答案)
A. x: int = 5
B. x = 5
C. int x = 5
A. x: int = 5
B. x = 5
正確答案為:x: int = 5, x = 5。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「定義函式判斷輸入的數字是否為偶數並呼叫」
A.
print(is_even(8))
B.
def is_even(n):
C.
return n % 2 == 0
B → C → A
def is_even(n):
return n % 2 == 0
print(is_even(8))
正確順序如上(由上到下)。
下列選項中,執行後何者「會產生 ValueError」?(請選出所有正確答案)
A. float("2.2")
B. int("2.2")
C. int("2")
D. float("xyz")
B. int("2.2")
D. float("xyz")
會出錯的是:int("2.2"), float("xyz")。
請將左側項目與右側正確的說明配對:(KeyError相關情境 ↔ 正確處理)
左側項目
直接用中括號取不存在的鍵用.get()取不存在的鍵用.get(key, 預設值)右側說明
A. 會產生KeyError
B. 找不到時回傳指定的預設值
C. 回傳None,不會報錯
1 → A:直接用中括號取不存在的鍵 → 會產生KeyError
2 → C:用.get()取不存在的鍵 → 回傳None,不會報錯
3 → B:用.get(key, 預設值) → 找不到時回傳指定的預設值
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「修正變數誤用問題,正確計算BMI」
A.
height = 1.7
B.
print(round(bmi, 2))
C.
weight = 60
D.
bmi = weight / (height ** 2)
C → A → D → B
weight = 60
height = 1.7
bmi = weight / (height ** 2)
print(round(bmi, 2))
正確順序如上(由上到下)。
math.floor(3.7) 的結果為?
A. 3
B. 4
C. 3.7
D. 4.0
A. 3
floor() 無條件捨去小數,回傳整數 3。