這個主題考什麼
- 理解索引和切片,切片不包含結束位置。
- 正確使用 split、join、strip 和 replace 等方法。
- 用 f-string 構造可讀輸出,並預測精確字元。
常見錯誤
- 忘記切片不包含結束索引。
- 以為字串方法會修改原字串。字串是不可變的。
- 題目要求精確輸出時忽略空格、換行或引號。
範例題
從完整題庫中挑出的 10 道代表題。先自己作答,再展開答案。
-
1. 小明從「Python奶茶」這個店名裡取前 3 個字做招牌,"Python奶茶"[0:3] 的結果是?
顯示答案
答案
A. Pyt解析: 切片含起點、不含終點,[0:3] 取下標 0、1、2,即 P、y、t;下標 3 已經是第四個字元,這是切片最常見的錯法。
-
2. 判斷對錯: True 和 False 是 Python 的布林值, 首字母必須大寫。
顯示答案
答案
A. ✅ 正確解析: Python 的布林常值是首字母大寫的 True 和 False。寫成 true、false 只是普通名字,會拋 NameError。
-
3. 🧋 小明拆分訂單字串,'hello world'.split() 的結果是?
顯示答案
答案
A. ['hello','world']解析: 不傳參數時 split() 把任意一段空白當作一個分隔符,並且會丟掉首尾空白,所以連續空格不會切出空串,這一點和 split(' ') 不同。
-
4. 執行 s = "abc"; s[0] = "A" 會怎樣?
顯示答案
答案
B. 拋出 TypeError解析: 字串不可變,按項賦值會拋 TypeError。應改用切片、replace() 或 join 生成新字串。
-
5. 小明格式化奶茶價格 f"{3.14159:.2f}" 元,輸出是 ___
顯示答案
答案
3.14解析: :.2f 保留兩位小數並捨入,3.14159 成為 3.14。格式只作用於冒號前的值,f-string 其餘部分原樣保留。
-
6. 🧋 小明拆分訂單字串,'1,2,3'.split(',') 回傳 ___ 型別
顯示答案
答案
串列解析: split() 總是回傳串列,哪怕只有一個欄位;元素都是字串,數字欄位還要用 int() 或 float() 另行轉換。
-
7. 把訂單裡的短橫線替換成空格,橫線填什麼方法?
order = '拿鐵-大杯' print(order.____('-', ' '))顯示答案
答案
replace解析: replace('-', ' ') 回傳把每個連字元換成空格的新字串。原 order 字串不變,因為字串不可變。
-
8. 小明截取店名,下面程式碼會列印什麼?
print("Python奶茶"[:3])顯示答案
答案
Pyt解析: [:3] 省略起點,從下標 0 開始、到 3 之前結束,取到 P、y、t;下標 6 的空格根本碰不到,結果是三個字母。
-
9. 偵錯標籤對編碼 65 的字元使用 repr。會列印什麼?
print(f"{chr(65)!r}")顯示答案
答案
'A'解析: chr(65) 生成字元 A,!r 使用 repr 表示,會給字串加上引號。所以輸出是帶引號的 'A'。
-
10. `is_pangram('7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog')` 回傳什麼?
from string import ascii_lowercase def is_pangram(sentence): return all(char in sentence.lower() for char in ascii_lowercase) print(is_pangram('7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog'))顯示答案
答案
False解析: 數字 7 和 3 頂替了字母,t 和 e 始終沒出現,all() 回傳 False。這種數字替代寫法不算全字母句。
常見問題
為什麼 s.strip() 沒有改變 s?
字串不可變。strip 回傳一個新字串;如果需要保留結果,要把它賦給變數。
怎樣連接字串列表?
使用分隔符.join(列表)。列表裡的每一項都必須是字串。
繼續保持練習節奏。
完整題庫會在這個瀏覽器裡記住進度,支援依主題篩選,並包含每日一題和錯題重練。