第 1 題
單選題資料型別與運算子執行下列程式碼,結果為?
print("ab" * 3)
A. ababab
B. bababa
C. abababb
D. 產生錯誤
正確答案
A. ababab
為什麼?
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "ababab"。
第 2 回以文字與數字處理為主軸,共 38 題。練習字串重複與分割、串列插入與移除,並從巢狀迴圈與計數器判斷執行次數。後段結合 BMI 函式、TypeError 辨識及除以零的例外處理,幫助釐清型別、運算順序和函式回傳值之間的關係;每題均可查看答案與文字解析。
執行下列程式碼,結果為?
print("ab" * 3)
A. ababab
B. bababa
C. abababb
D. 產生錯誤
A. ababab
字串的 * 是重複、+ 是串接,依運算優先順序(* 先於 +)計算後結果為 "ababab"。
執行下列程式碼,結果為?(提示:留意運算子優先順序)
print(2 + 3 * 4)
A. 14
B. 15
C. 13
D. 28
A. 14
Python 的運算子優先順序是 ** 最高,接著是 * 和 /,最後是 + 和 -,括號會優先運算。結果為 14。
執行下列程式碼,結果為?
print(len("我 喜歡 寫 程式".split()))
A. 4
B. 5
C. 3
D. 產生錯誤
A. 4
.split() 會依指定符號把字串切成 list,共切出 4 個元素。
執行下列程式碼,輸出為?
s = "programming"
print(s[-1])
A. g
B. programming
C. 產生錯誤
D. G
A. g
負數索引從字串尾端開始數(-1 是最後一個字元),這段程式碼的結果是 "g"。
nums = [5, 6, 7, 8],執行以下程式碼後輸出為?
nums = [5, 6, 7, 8]
nums.pop()
print(nums)
A. [5, 6, 7]
B. [5, 6, 7, 8]
C. [7, 6, 5]
D. 產生錯誤
A. [5, 6, 7]
依序執行後,結果為 [5, 6, 7]。
nums = [2, 4, 6],執行以下程式碼後輸出為?
nums = [2, 4, 6]
nums.insert(0, 100)
print(nums)
A. [100, 2, 4, 6]
B. [2, 4, 6]
C. [6, 2, 4, 100]
D. [2, 4, 6, 100]
A. [100, 2, 4, 6]
依序執行後,結果為 [100, 2, 4, 6]。
下列選項中,何者屬於「int」?(請選出所有正確答案)
A. 10
B. "10"
C. 10.5
D. False
E. -5
A. 10
E. -5
正確答案為:10, -5。
請將左側項目與右側正確的說明配對:(資料型別 ↔ 範例)
左側項目
intfloatstrbool右側說明
A. 3.14
B. "hello"
C. 10
D. True
1 → C:int → 10
2 → A:float → 3.14
3 → B:str → "hello"
4 → D:bool → True
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「讀取一個字串並轉成大寫後印出」
A.
print(s)
B.
s = s.upper()
C.
s = "hello"
C → B → A
s = "hello"
s = s.upper()
print(s)
正確順序如上(由上到下)。
公司的員工績效考核系統要把分數轉換成等第:90分以上「優」、80~89分「甲」、70~79分「乙」、其餘「丙」。某員工本季考核分數是 72 分,執行下列程式碼,輸出的等第為?
score = 72
if score >= 90:
grade = '優'
elif score >= 80:
grade = '甲'
elif score >= 70:
grade = '乙'
else:
grade = '丙'
print(grade)
A. 乙
B. 優
C. 甲
D. 丙
A. 乙
score = 72,由上往下第一個成立的條件決定結果,答案是「乙」。
您正在撰寫一支「網路延遲監控系統」的判斷程式,需求是:latency >= 800 判定為「延遲嚴重」,latency >= 300(未滿800)判定為「延遲偏高」,其餘為「正常」。若 latency = 850,執行下列程式碼,輸出的判定結果為?
latency = 850
if latency >= 800:
result = '延遲嚴重'
elif latency >= 300:
result = '延遲偏高'
else:
result = '正常'
print(result)
A. 延遲嚴重
B. 延遲偏高
C. 正常
D. 產生錯誤
A. 延遲嚴重
latency = 850,依序判斷後結果為「延遲嚴重」。
公司人資系統的升遷規則:年資(years,年)需 >= 2 且績效考核分數(rating)需 >= 80 才符合升遷資格。若 years = 1、rating = 90,執行下列程式碼,輸出結果為?
years = 1
rating = 90
if years >= 2 and rating >= 80:
print('符合升遷資格')
else:
print('不符合升遷資格')
A. 不符合升遷資格
B. 符合升遷資格
C. 產生錯誤
D. None
A. 不符合升遷資格
and 需要兩個條件同時成立才是 True,此例 years>=2 為False、rating>=80 為True,所以結果是「不符合升遷資格」。
您正在為公司教育訓練系統撰寫巢狀判斷程式,評定測驗結果:先看 score 是否及格(>=60),及格者再看 has_bonus 是否為 True 決定是否額外加分。若 score = 85、has_bonus = False,執行下列程式碼,輸出為?
score = 85
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 = 60,判斷條件是 x > 60,執行下列程式碼,輸出為?(提醒:注意 > 是否包含等於的情況)
x = 60
if x > 60:
print('未通過')
else:
print('另一種結果')
A. 另一種結果
B. 未通過
C. 產生錯誤
D. None
A. 另一種結果
x = 60、門檻 = 60,> 不包含等於的情況,所以條件不成立,輸出「另一種結果」。
公司的系統通知模組要把 words = ['系統', '啟動', '完成', '確認'] 這幾個片段組成一則完整的訊息字串,執行以下程式碼,輸出為?
words = ['系統', '啟動', '完成', '確認']
result = ''
for w in words:
result += w
print(result)
A. 系統啟動完成確認
B. 系統 啟動 完成 確認
C. 確認完成啟動系統
D. 產生錯誤
A. 系統啟動完成確認
迴圈逐一把每個元素用 += 接到 result 後面,最後得到 "系統啟動完成確認"。
您正在開發一支自動化測試腳本,用巢狀迴圈跑所有組合:外層跑 2 種瀏覽器、內層每種瀏覽器都測 3 個頁面,執行以下程式碼,count 最後代表總測試次數,其值為?
count = 0
for i in range(2):
for j in range(3):
count += 1
print(count)
A. 6
B. 5
C. 8
D. 10
A. 6
外層執行 2 次,內層每次執行 3 次,總共執行 2 × 3 = 6 次。
公司系統的 API 重試機制規則:計數器 i 從 10 開始,每次減少 1,直到小於 0 為止才停止重試,count 記錄總共重試了幾次。執行以下程式碼,輸出為?
i = 10
count = 0
while i > 0:
count += 1
i += -1
print(count)
A. 10
B. 11
C. 9
D. 產生錯誤(無窮迴圈)
A. 10
迴圈每次讓 i 減少 1,總共執行了 10 次才符合結束條件。
下列選項中,何者「用在迴圈內控制執行流程」?(請選出所有正確答案)
A. break
B. continue
C. pass
D. return
A. break
B. continue
正確答案為:break, continue。
請將左側項目與右側正確的說明配對:(條件情境 ↔ 對應判斷式)
左側項目
年齡至少18歲分數低於60分溫度超過30度庫存為0右側說明
A. temp > 30
B. stock == 0
C. age >= 18
D. score < 60
1 → C:年齡至少18歲 → age >= 18
2 → D:分數低於60分 → score < 60
3 → A:溫度超過30度 → temp > 30
4 → B:庫存為0 → stock == 0
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「計算 1 到 10 的總和並印出」
A.
print(total)
B.
for i in range(1, 11):
C.
total += i
D.
total = 0
D → B → C → A
total = 0
for i in range(1, 11):
total += i
print(total)
正確順序如上(由上到下)。
公司人事系統要產生員工資料卡,name 是姓名、years 是年資。執行下列程式碼,輸出為?
name = "林小華"
years = 12
print(f"{name}的年資是{years}年")
A. 林小華的年資是12年
B. 林小華的年資是years年
C. name的年資是12年
D. 產生錯誤
A. 林小華的年資是12年
f-string 會把 {} 裡的變數名稱直接替換成變數目前的值。
您正在開發報表系統,想用特定符號分隔顯示各分區代碼,執行下列程式碼,輸出為?
print("x", "y", "z", sep="*")
A. x*y*z
B. x y z
C. xyz
D. 產生錯誤
A. x*y*z
print() 的 sep 參數會取代預設的空白分隔符,改用 "*" 分隔各個值。
公司的系統日誌模組要讓兩次 print 印在同一行,執行下列程式碼,輸出為?(用  代表換行)
print("Bye", end="~")
print("!")
A. Bye~!
B. Bye!
C. Bye!
D. 產生錯誤
A. Bye~!
print() 的 end 參數會取代預設的換行符號,這裡改成 "~",所以兩次 print 會接在同一行。
您正在開發公司內部系統的「訂購數量欄位」,讓使用者輸入資料,不論實際輸入什麼,執行下列程式碼後 print(type(...)) 顯示的型別一定是?
n = int(input("訂購數量:"))
print(type(n))
A. <class 'int'>
B. <class 'str'>
C. <class 'float'>
D. <class 'bool'>
A. <class 'int'>
input() 回傳值一律是字串;若程式碼中有 int()/float() 轉型,型別會依轉型函式而定。
電商後台系統要印出訂單金額明細。執行下列程式碼,輸出為?
order_id = "A1002"
amount = 270
print(f"{order_id}訂單金額{amount}元")
A. A1002訂單金額270元
B. A1002訂單金額amount元
C. order_id訂單金額270元
D. 產生錯誤
A. A1002訂單金額270元
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
您正在撰寫人資系統,需要公告每位員工的季度考核分數。執行下列程式碼,輸出為?
name = "珮岑"
score = 84
print(f"{name}本季考核{score}分")
A. 珮岑本季考核84分
B. 珮岑本季考核score分
C. name本季考核84分
D. 產生錯誤
A. 珮岑本季考核84分
f-string 會把 {} 裡的變數名稱替換成變數的實際值。
下列選項中,何者「跟使用者輸入資料有關的函式」?(請選出所有正確答案)
A. input()
B. int(input())
C. print()
D. float(input())
A. input()
B. int(input())
D. float(input())
正確答案為:input(), int(input()), float(input())。
請將左側項目與右側正確的說明配對:(輸入情境 ↔ 對應寫法)
左側項目
讀取文字讀取整數讀取小數右側說明
A. float(input())
B. input()
C. int(input())
1 → B:讀取文字 → input()
2 → C:讀取整數 → int(input())
3 → A:讀取小數 → float(input())
配對詳見左右對應關係。
下列何者是合法的 Python 變數名稱?
A. for
B. my-2
C. my_var
D. 3bad
C. my_var
my_var 符合命名規則;其餘選項分別違反:不能數字開頭 / 不可用特殊符號或空白 / 不可使用保留字 for。
多行註解可以用哪種寫法?
A. /* 這是多行註解 */
B. ''' 這是 多行註解 '''
C. # 這是 多行註解
D. " 這是多行註解 "
B. ''' 這是 多行註解 '''
Python 使用 # 作為單行註解,''' '''或""" """作為多行註解;// 和 <!-- --> 是其他語言的寫法,Python不支援。
下列程式碼會發生什麼問題? if x > 0: print(x)
A. 正常執行,不會有問題
B. NameError(變數未定義)
C. IndentationError(if之後少了縮排)
D. SyntaxError(少了冒號)
C. IndentationError(if之後少了縮排)
Python 用縮排(通常4個空白)表示程式區塊歸屬,同一區塊縮排必須一致,否則會產生 IndentationError。
下列選項中,何者是合法的 Python 變數名稱?(請選出所有正確答案)
A. total
B. 3total
C. user_name
D. user name
E. class
A. total
C. user_name
合法的有:total, user_name;其餘違反命名規則(數字開頭/含空白或連字號/使用保留字)。
下列選項中,何者「屬於合法的函式定義寫法」?(請選出所有正確答案)
A. def f():
B. function f():
C. def f() {
D. def f(): pass
A. def f():
D. def f(): pass
正確答案為:def f():, def f(): pass。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「定義BMI計算函式並呼叫」
A.
print(round(bmi(60, 1.7), 2))
B.
def bmi(weight, height):
C.
return weight / (height ** 2)
B → C → A
def bmi(weight, height):
return weight / (height ** 2)
print(round(bmi(60, 1.7), 2))
正確順序如上(由上到下)。
下列選項中,執行後何者「會產生 TypeError」?(請選出所有正確答案)
A. "5"+5
B. "5"+"5"
C. 5+5
D. 5+"5"
A. "5"+5
D. 5+"5"
會出錯的是:"5"+5, 5+"5"。
請將左側項目與右側正確的說明配對:(除錯技巧 ↔ 說明)
左側項目
print()除錯看錯誤訊息最後一行try/exceptfinally右側說明
A. 攔截並處理錯誤,避免程式崩潰
B. 不論是否出錯都會執行
C. 觀察變數目前的值
D. 判斷錯誤型別
1 → C:print()除錯 → 觀察變數目前的值
2 → D:看錯誤訊息最後一行 → 判斷錯誤型別
3 → A:try/except → 攔截並處理錯誤,避免程式崩潰
4 → B:finally → 不論是否出錯都會執行
配對詳見左右對應關係。
請將以下程式碼片段排列成正確的執行順序,使其能完成任務:「用try/except防止除以0的錯誤」
A.
try:
B.
return a / b
C.
return "除數不能為0!"
D.
def divide(a, b):
E.
except ZeroDivisionError:
D → A → B → E → C
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return "除數不能為0!"
正確順序如上(由上到下)。
要計算平方根,需要用到哪個模組的函式?
A. math
B. random
C. sys
D. re
A. math
import math,使用 math.sqrt()。