ITS Python 考前速查表
姓名:____________ 考試日期:____________
P1 型態・運算子・切片 | P2 格式化・檔案・判斷 | P3 迴圈・函式・模組 | P4 例外・考前確認
① 型態轉換|input() 永遠回傳 str
| 運算式 | 結果 | 運算式 | 結果 | |
|---|---|---|---|---|
input(...) | str | 10 / 4 | float 2.5 | |
int("90") | int | 10 // 4 | int 2 | |
float("3.14") | float | 10 // 4.0 | float 1.0 | |
eval("2024")-eval("18") | int | 10 % 4 | int 2 | |
"年="+str(x) | str | "5" * 4 | str "5555" | |
type(+1E10) | float | type("True") | str |
⚠️ "字"+ 5 → TypeError|int() 是捨去不是四捨五入
② 運算子優先序(由高到低)
( ) → ** → +x -x ~x → * / // % → + - → 比較 → not → and → or
⚠️ not 在「比較」之後,不是跟 -x 同層 → not a == b 等於 not (a == b)
-a ** 2=-(a**2)「a 乘 -1 再平方」必須寫(-a) ** 2==比值 |is比同一個物件- 字串/數字不可變:
b = a; a += "x"→ b 不變 - 截斷小數:
int(a/b)✅a//b✅a**b❌
練習:(9 % 4 * 10) // 2.0 ** 3.0 + 4 → 8.0 → 1 → 10 → 1.0 → 5.0
③ 切片 [start : stop : step] ★ 不含 stop
| 寫法 | "abcdefg...z" 結果 |
|---|---|
alph[3:6] | def |
alph[:6] | abcdef |
alph[3:15:3] | dgjm |
alph[::-1] | 整串反轉 |
list[:-3] | 排除最後 3 個 |
month[1::2] | 從第 2 個起每隔一個 |
list + list = 串接 | list * n = 重複 | x in list 回傳 True/False
⚠️ 字典鍵是 1(int)、input() 是 "1"(str) → 永遠找不到 = 資料類型不符
④ 格式化輸出
| 需求 | % | format() |
|---|---|---|
| 靠左寬 20 | %-20s | {0:<20} |
| 寬 6 小數 2 位 (XXX.XX) | %6.2f | {1:6.2f} |
| 四捨五入 2 位 | — | format(x, '.2f') |
"{1} and {0}".format(z, y) → 索引從 0 開始數引數
%B月全名|%A星期全名|%d日|%y兩位年|%Y四位年
⑤ 檔案模式 ★★★
| 模式 | 不存在 | 已存在 | 讀 | 寫 |
|---|---|---|---|---|
r | 報錯 | 讀 | ✅ | ❌ |
w | 建立 | 清空覆寫 | ❌ | ✅ |
a | 建立 | 附加結尾 | ❌ | ✅ |
r+ | 報錯 | 不清空 | ✅ | ✅ |
w+ | 建立 | 清空 | ✅ | ✅ |
- 題目說「已有內容要刪掉」→
w|「加到最後」→a os.path.isfile()檢查存在(❌os.exist/os.find)file.read()讀全部 |file.write()寫入(❌file.add/append)readline():檔尾回""空白行回"\n"with open(f,'r') as file:→ 離開縮排自動關檔
⑥ if / elif / else ★★★
同層第一個用
if,後面用elif,收尾用else。
進入巢狀內層,第一個判斷又要重新用if!
if grade <= 100: # 外層 if
if grade >= 90: ... # ← 內層第一個,用 if
elif grade >= 80: ...
elif grade < 80 and grade > 69: ...
else: ...
else:
print("Invalid")⚠️ if a = b: → 語法錯誤 |<> Python 3 不支援,用 !=
⚠️ if a <= b: 的敘述寫「只有小於才印」→ 錯
⑦ 迴圈與 range()
| 需求 | 寫法 |
|---|---|
| 2~12 乘法表 | range(2, 13) |
| 2~9 九九乘法 | range(2, 10) |
| 走訪清單索引 | range(len(x)) ← 不要 −1! |
| 印 5 行 | range(1, 6) |
| 關鍵字 | 作用 |
|---|---|
break | 立刻跳出迴圈(「找到就停止」) |
continue | 跳過本輪,繼續下一個(「不符合就略過」) |
pass | 什麼都不做(佔位) |
for-else:else 只在沒有被 break 時執行 →「全部找完都沒找到」
⚠️ 除錯四大點:① 忘記冒號 : ② 用 [ ] 包條件 ③ numList(i) 應為 numList[i] ④ 忘記 n += 1 → 無窮迴圈
⑧ 函式
- 定義的參數個數=呼叫傳的引數個數;參數名=函式內用的變數名
- 有預設值的參數,右側全部也要有預設值
- 關鍵字引數順序可任意,但名稱必須一致
- 只有
print()沒有return→ 不回傳值(實為None) - 函式內改 int 參數 → 不影響外部(區域變數 + 不可變)
註解:# 單行(❌ //、/* */、<!-- -->)
Docstring:"""三個雙引號""",放在 def 下一行縮排內,列印用 函式名.__doc__(前後各 2 底線)
⑨ 模組
| random | 範圍 |
|---|---|
randint(a, b) | a ≤ N ≤ b(含尾) |
randrange(a, b, s) | a ≤ N < b(不含尾) |
choice(list) | 隨機取一個元素 |
shuffle(list) | 打亂順序 |
- 0
10 →11 →randint(0, 10)| 5randint(5,11)或randrange(5,12) - 5 的倍數 5~100 →
randint(1,20)*5或randrange(5,105,5)
math:fabs() 絕對值|floor() 無條件捨去|ceil() 無條件進位
from datetime import datetime as dt← 設替代名稱的正確寫法datetime.datetime.now()/now.strftime("%A")取星期全名sys.argv[0]= 腳本名,argv[1]才是第一個參數- 用
os.path.isfile()一定要先import os
⑩ 例外處理與單元測試
try: # 可能出錯的程式碼
except ValueError: # 捕捉特定例外
else: # try 沒出錯才執行
finally: # 一定執行✅ 多個 except|✅ 只有 finally 沒 except|✅ except+finally 並存
❌ 多個 finally → 一個 try 只能配一個 finally
三種錯誤:語法錯誤(沒執行就擋)/執行階段錯誤(TypeError…)/邏輯錯誤(不報錯但算錯)
import unittest
class TestX(unittest.TestCase): # 繼承 unittest.TestCase
def test_xxx(self): # 方法名必須 test 開頭
self.assertIsInstance(obj, cls) # 用 self. 呼叫| 測什麼 | 方法 |
|---|---|
| 值相同 | assertEqual(a,b) |
| 同一物件 | assertIs(a,b) |
| 存在於清單 | assertIn(a,b) |
| 是某類別實例 | assertIsInstance(obj,cls) |
🚨 進考場前最後確認的 8 件事
input()= str,要計算先轉型/一定 float,//整除,%取餘- 切片 不含 stop,
[:-N]排除最後 N 個 - 檔案:
w清空、a附加、readline()檔尾回"" - 巢狀內層第一個判斷用
if(最常錯!) range(len(x))不要多減 1randint含尾、randrange不含尾- 一個
try只能配一個finally
作答策略
「程式碼排序」與「下拉選單填空」每格獨立計分,不會的也要猜滿,絕對不要留白。
✍️ 我自己最常錯的 4 個觀念(手寫)
| # | 觀念 | 正確做法 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 |
🔗 詳細版:00-ITS Python 考照重點總整理 解答:01-模擬題庫解答與勘誤速查 新題:02-2024新增考題重點解析 測驗:04-易錯題自我測驗卡