ITS Python 考前速查表

姓名:____________ 考試日期:____________

P1 型態・運算子・切片 | P2 格式化・檔案・判斷 | P3 迴圈・函式・模組 | P4 例外・考前確認


① 型態轉換|input() 永遠回傳 str

運算式結果運算式結果
input(...)str10 / 4float 2.5
int("90")int10 // 4int 2
float("3.14")float10 // 4.0float 1.0
eval("2024")-eval("18")int10 % 4int 2
"年="+str(x)str"5" * 4str "5555"
type(+1E10)floattype("True")str

⚠️ "字"+ 5TypeErrorint()捨去不是四捨五入


② 運算子優先序(由高到低)

( ) → ** → +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 + 48.01101.05.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.existos.find
  • file.read() 讀全部 |file.write() 寫入(❌ file.addappend
  • 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)打亂順序
  • 010 → randint(0, 10) | 511 → randint(5,11)randrange(5,12)
  • 5 的倍數 5~100 → randint(1,20)*5randrange(5,105,5)

mathfabs() 絕對值|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|✅ 只有 finallyexcept|✅ 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 件事

  1. input() = str,要計算先轉型
  2. / 一定 float,// 整除,% 取餘
  3. 切片 不含 stop[:-N] 排除最後 N 個
  4. 檔案:w 清空、a 附加、readline() 檔尾回 ""
  5. 巢狀內層第一個判斷用 if(最常錯!)
  6. range(len(x)) 不要多減 1
  7. randint 含尾、randrange 不含尾
  8. 一個 try 只能配一個 finally

作答策略

「程式碼排序」與「下拉選單填空」每格獨立計分,不會的也要猜滿,絕對不要留白


✍️ 我自己最常錯的 4 個觀念(手寫)

#觀念正確做法
1                            
2                            
3                            
4                            

🔗 詳細版:00-ITS Python 考照重點總整理 解答:01-模擬題庫解答與勘誤速查 新題:02-2024新增考題重點解析 測驗:04-易錯題自我測驗卡