ITS Python — 間隔重複閃卡

這個檔案不是拿來「讀」的

這是給 Spaced Repetition 外掛吃的資料檔,格式是「問題 / ? / 答案」。
要複習請按左側欄的 🗂️ 圖示,或 Ctrl+PSpaced Repetition: Review flashcards
想用眼睛讀的版本請看 04-易錯題自我測驗卡

編輯注意

  1. 卡片之間必須空一行,卡片內部不可以有空行(會被切成兩張)。
  2. 每張卡第一行的 #flashcards/... 是牌組標籤,複習時不會顯示。
  3. 複習後外掛會自動在卡片尾端加上 <!--SR:...--> 排程註解,不要手動刪

ch01-02-型態與運算子
age = input("Enter your age: ") 之後,age 的資料型態是?
?
str(字串)input() 的回傳值永遠是字串,即使使用者輸入數字。要運算必須先 int() / float() / eval()

ch01-02-型態與運算子
print("worked for" + (int(end) - int(start)) + "hours") 會發生什麼事?
?
TypeError —— str 不能直接 + int。正確:print("..." + str(int(end) - int(start)) + "hours")

ch01-02-型態與運算子
「即使使用者輸入小數,也必須轉成整數計算」該用哪個寫法?
?
int(input("..."))float() 不會變整數;不加轉型會是字串。

ch01-02-型態與運算子
type(+1E10)type(5.0)type("True")type(False) 分別是什麼?
?
float、float、str、bool。陷阱:"True" 有引號是字串1E10 科學記號是 float

ch01-02-型態與運算子
寫出六類運算的優先順序(由先到後)
?
括弧 → 指數 ** → 正負號 +x -x ~x → 乘除 * / // % → 加減 + - → 比較 → notandor。⚠️ 陷阱:not 排在比較之後,不是跟正負號同層 → not a == b 等於 not (a == b);與正負號同層的是 ~(位元反轉)。

ch01-02-型態與運算子
a=24; b=7; ans = (a % b * 100) // 2.0 ** 3.0 - bans 是多少?
?
30.024%7=33*100=3002.0**3.0=8.0300//8.0=37.0(有 float → float)→ 37.0-7=30.0

ch01-02-型態與運算子
公式「b 等於 a 乘以 −1 之後再平方」的正確寫法?
?
b = (-a) ** 2。寫成 -a ** 2 會被解讀為 -(a ** 2),因為指數優先於負號

ch01-02-型態與運算子
==is 差在哪裡?
?
== 比較值 / 內容is 比較是否為同一個物件(記憶體位址)。例:兩個內容相同但獨立的清單 → == 為 True、is 為 False。

ch01-02-型態與運算子
a = 'Config1'b = aa += 'Config2'print(a)print(b) 各印什麼?
?
Config1Config2Config1。字串是不可變物件a += ... 會建立新物件讓 a 指向它,b 仍指向原本的 'Config1'

ch01-02-型態與運算子
要「去除平均值的小數部分」,有哪兩種正確寫法?
?
int(total / count)total // count。(total ** count 是指數運算,錯誤)

ch03-字串與清單
alph = "abcdefghijklmnopqrstuvwxyz"alph[3:6]alph[:6] 各是什麼?
?
defabcdef。切片 [start:stop] 不包含 stop;省略 start 預設從 0 開始。

ch03-字串與清單
清單有 60 人、最後 3 位是幹部,要取得「除了幹部以外的所有人」怎麼寫?
?
classroom[:-3]classroom[0:-3]。因為切片不含 stop,-3 正好排除最後 3 個。

ch03-字串與清單
反轉字串最短的寫法是什麼?迴圈版怎麼寫?
?
alph[::-1]。迴圈版:for index in range(len(name)-1, -1, -1)

ch03-字串與清單
list_3 = [1,2] + [3,4]list_4 = list_3 * 3list_4 是什麼?
?
[1,2,3,4,1,2,3,4,1,2,3,4]+ 是串接、* 是整串重複(不是逐元素相乘,也不是巢狀)。

ch03-字串與清單
aList = [0,1,2,3,4]print(4 in aList) 印出什麼?
?
Truein 回傳布林值,不是索引也不是元素。

ch03-字串與清單
rooms = {1:'Foyer', 2:'Conference Room'}room = input(...),為什麼永遠找不到房間?
?
資料類型不符。字典的鍵是整數 1,但 input() 得到字串 "1",在 Python 中 "1" != 1。修正:room = int(input(...))

ch04-輸入輸出與檔案
"{1} and {0} and {2}".format(z, y, x) 中,{1} 對應哪個變數?
?
yformat() 的引數索引從 0 開始{0}=z{1}=y{2}=x

ch04-輸入輸出與檔案
「姓名靠左對齊寬 20」和「平均分數格式 XXX.XX」的格式字串各是什麼?
?
%-20s%6.2fXXX.XX = 左 3 位 + 小數點 + 右 2 位 = 總寬 6、小數 2 位。

ch04-輸入輸出與檔案
輸出要求「字串加雙引號、數字不加、逗號分隔」,哪兩種寫法正確?
?
print('"{0}", {1}'.format(item, sales)) ✅ print('"' + item + '",', sales)(print 用逗號會自動補空格) ❌ print(item + ',' + sales) → TypeError

ch04-輸入輸出與檔案
⭐ 開檔模式 rwaw+ 在「檔案不存在」與「檔案已存在」時各如何?
?
r = 不存在報錯 / 唯讀;w = 建立 / 清空覆寫a = 建立 / 附加到結尾w+ = 建立 / 清空(可讀寫)。題目說「已有內容要刪除」→ w;「加到最後」→ a

ch04-輸入輸出與檔案
readline() 讀到「檔案結尾」和「空白行」分別回傳什麼?
?
檔尾 (EOF) → "" 空字串;空白行 → "\n"。所以「還沒到檔尾」寫 if line != "",「過濾空白行」寫 if line != "\n"

ch04-輸入輸出與檔案
檢查檔案是否存在、讀取全部內容、寫入內容的正確方法各是什麼?
?
os.path.isfile(path)(要先 import os)、file.read()file.write("...")。❌ os.existos.findfile.addappend 都不存在。

ch04-輸入輸出與檔案
print('{:%B-%d-%y}'.format(datetime.datetime(2017,4,7))) 輸出什麼?
?
考試選 APRIL-07-17,但 Python 實際輸出是 April-07-17%B 只有首字大寫,官方選項印成全大寫是排版問題)。%B 月份全名、%d 兩位日、%y 兩位年。(%A 才是星期全名)

ch05-判斷式與迴圈
⭐⭐ 外層 if grade <= 100: 底下第一個判斷 grade >= 90 要用 if 還是 elif
?
if。🔑 進入巢狀內層時,第一個判斷要重新用 if,同層的後續才用 elif,最後用 else 收尾。這是全書最常錯的一題。

ch05-判斷式與迴圈
判斷 1 位數 / 2 位數 / 2 位以上,三格分別填什麼?
?
if num > -10 and num < 10:elif num > -100 and num < 100:else:。由小範圍往大範圍排,最後用 else 收剩下的。

ch05-判斷式與迴圈
入場費:5 歲以上學生 10 元、5–17 歲非學生 20 元、17 歲以上非學生 50 元。內層條件怎麼寫?
?
外層 if age >= 5 and school == True:elif age >= 5 and school == False:;內層因為已確認 ≥5,只需 if age <= 17: / else:

ch05-判斷式與迴圈
range(2, 13) 會產生哪些數字?做「2 到 12 的乘法表」要怎麼寫?
?
產生 2, 3, …, 12(含 start、不含 stop)。要含 12 → stop 必須寫 13。2~9 的九九乘法 → range(2, 10)

ch05-判斷式與迴圈
⭐ 走訪整個清單的索引,正確寫法是什麼?常見錯誤是什麼?
?
for index in range(len(mylist)):。❌ range(len(mylist) - 1)少跑最後一個元素(除錯題最常見答案);❌ size() 不是 Python 函式。

ch05-判斷式與迴圈
breakcontinuepass 各做什麼?題目關鍵字怎麼對應?
?
break = 立刻跳出迴圈(「找到就停止」);continue = 跳過本輪繼續下一個(「不符合就略過這一位」);pass = 什麼都不做(「暫時保留空區塊」)。

ch05-判斷式與迴圈
for ... else 的 else 什麼時候會執行?
?
只有當迴圈「沒有被 break 中斷」、完整跑完時才執行。 用途:「全部找完都沒找到」→ 印出找不到訊息。

ch05-判斷式與迴圈
product=2; n=5while (n != 0): product *= n; print(product); n -= 1; if n == 3: break 會印幾行?
?
2 行(印出 10、40)。第 1 圈 2×5=10、n→4;第 2 圈 10×4=40、n→3,n==3 成立 → break。

ch05-判斷式與迴圈
質數判斷程式中,if n % i == 0: 之後填什麼?while 迴圈最後填什麼?
?
break(已確定不是質數,不必再檢查)與 n = n + 1(計數器遞增,不寫會無窮迴圈)。另外 is_prime = True 必須放在 while 迴圈內每輪重設。

ch05-判斷式與迴圈
迴圈除錯題最常見的 4 個錯誤是什麼?
?
① 條件式後面忘記冒號 : ② 用 [ ] 包條件(while [i < 10]) ③ numList(i) 應為 numList[i] ④ if a = b: 應為 ==,且 <> 在 Python 3 不支援要用 !=

ch06-函式
呼叫是 get_name()calc_calories(distance, burn_rate),函式內用 miles * calories_per_mile,定義該怎麼寫?
?
def get_name():(呼叫沒傳引數 → 不能有參數)與 def calc_calories(miles, calories_per_mile):(參數名 = 函式內用的變數名)。🔑 ① 看呼叫傳幾個 ② 看函式內部用什麼名字。

ch06-函式
關於預設參數,哪些敘述正確、哪些錯誤?
?
✅ 有預設值的參數,右側全部也要有預設值;✅ 3 個必要參數只傳 2 個會 TypeError;❌「只傳兩個時第三個會是 None」(會用預設值);❌「函式內改 int 參數會影響外部」(int 不可變 + 區域變數)。

ch06-函式
def roomAssignment(student, year):,哪些呼叫方式是對的?
?
roomAssignment(name, year=grade)、✅ roomAssignment("Sherlock", 4);❌ roomAssignment(student, year)(變數未定義,NameError)、❌ roomAssignment(year=6, name="Minnie")(參數叫 student 不叫 name,TypeError)。🔑 關鍵字引數順序可任意但名稱必須一致

ch06-函式
⭐ Docstring 三問:用什麼符號?放哪裡?怎麼列印?
?
三個雙引號 """...""" ② 緊接在 def 之後的第一行(要縮排) ③ print(cube.__doc__)(前後各兩個底線)。※ 課本 6-12 頁印 A/A/B 是錯的,正確為 D/B/C。

ch06-函式
關於註解的四個是非題,答案分別是什麼?
?
① Python 不檢查註解行的語法 → ✅ 正確 ② 每行註解的 # 是選擇性的 → ❌ 錯誤 ③ comment = "# Return the value" 會被當註解 → ❌ 錯誤(引號內是字串) ④ return x ** y # ... 是合法內嵌註解 → ✅ 正確

ch07-08-模組與例外
randintrandrange 的範圍差在哪?產生 010 的整數該用哪個?
?
randint(a, b)a ≤ N ≤ b(含尾)randrange(a, b, s)a ≤ N < b(不含尾)。0
10 用 random.randint(0, 10)(課本 7-12 頁印 A 是錯的,正確 D)。5~11 → randint(5,11)randrange(5,12,1)

ch07-08-模組與例外
math.fabsmath.floormath.ceil 各是什麼?題目怎麼分辨?
?
fabs(x) = 絕對值floor(x) = 無條件捨去(題目說「移除小數 / 取整」);ceil(x) = 無條件進位(題目說「無條件進位」)。⚠️ 教材 CH07-6 問「進位」用 ceil,新題 Q74 問「移除小數」用 floor,兩題長很像!

ch07-08-模組與例外
執行 python Script.py Cheese Bacon Bread 後,sys.argv[2] 是什麼?
?
Baconargv[0] = 腳本名稱 Script.pyargv[1] 才是第一個參數,argv[2] = Bacon

ch07-08-模組與例外
⭐ 關於 try 陳述式的四個是非,答案分別是什麼?
?
① 可以有一個或多個 except → ✅ Yes ② 可以只有 finally 沒有 except → ✅ Yes ③ 可以同時有 finallyexcept → ✅ Yes ④ 可以有多個 finally → ❌ No(只能一個,且放最後)

ch07-08-模組與例外
def calc_power(a,b): return a**bbaseexponent 都用 input() 取得,會出什麼錯?屬於哪一類?
?
執行階段錯誤(TypeError)input() 回傳 str,str ** str 不支援。程式中途爆掉,所以「會正確輸出」是錯的。修正:用 eval(input(...))int(input(...))

ch07-08-模組與例外
open("out.txt", 'w+') 但 out.txt 不存在,會發生什麼?
?
正常執行,不會發生錯誤。 'w+' 在檔案不存在時會自動建立,因此不會觸發 IOError,接著會執行 else 區塊。

ch07-08-模組與例外
單元測試的四格填空:import 什麼、繼承什麼、方法怎麼命名、斷言怎麼呼叫?
?
import unittestclass TestIsInstance(unittest.TestCase):def test_isInstance(self):必須 test 開頭,測試執行器只跑 test 開頭的方法)→ self.assertIsInstance(obj, cls)要用 self.)。

ch07-08-模組與例外
assertEqualassertIsassertInassertIsInstance 各測什麼?
?
assertEqual(a,b)相同(==);assertIs(a,b)同一物件is);assertIn(a,b)存在於清單in);assertIsInstance(obj,cls)是否為某類別的實例

ch07-08-模組與例外
語法錯誤、執行階段錯誤、邏輯錯誤怎麼分辨?各舉一例。
?
語法錯誤 = 程式還沒執行就被擋(少冒號、if a = b:<>);執行階段錯誤 = 執行到那行才爆(TypeError、ValueError、ZeroDivisionError);邏輯錯誤 = 不報錯但答案錯(用 // 算平均、range 少跑一次)。


🔗 00-ITS Python 考照重點總整理 01-模擬題庫解答與勘誤速查 02-2024新增考題重點解析 03-考前速查表(A4列印用) 04-易錯題自我測驗卡