← 知识手册目录工程能力 · GESP 2 / 4 / 8 级相关跳到完整速查 ↓

PYTHON KNOWLEDGE · 10

异常、文件、测试与调试

读懂报错、缩小问题、设计测试,并安全地打开、读取和关闭文本文件。

GESP 2GESP 4GESP 8

01 · FORMAL DEFINITION

正式定义

异常是在运行期间表示错误或特殊情况的对象。调试是用可复现输入和证据定位实际行为与预期行为差异的过程;文件对象连接程序与持久化字节数据。

02 · MUST KNOW

学完这一章,必须说清楚的规则

  1. 01

    先读 traceback 最后一行的异常类型与消息,再从最靠近自己代码的栈帧向上追踪。

  2. 02

    try 只包可能失败的最小代码;except 捕获具体异常;else 处理成功路径;finally 做必需清理。

  3. 03

    raise 主动报告不满足的前置条件;assert 用于开发期内部假设,不用于校验不可信用户输入。

  4. 04

    with open(...) as file 会在退出代码块时可靠关闭文件。文本模式必须明确编码,本站统一推荐 encoding='utf-8'。

  5. 05

    测试至少包含正常值、边界值、空数据、极端值和反例;每个测试只应有明确目的。

  6. 06

    定位错误时一次只改一个假设,保留能稳定复现问题的最小输入。

03 · RUNNABLE EXAMPLE

可运行示例与因果解释

PYTHON
try:
    with open('scores.txt', 'r', encoding='utf-8') as file:
        scores = [int(line) for line in file if line.strip()]
except FileNotFoundError:
    scores = []
print(sum(scores))

OPEN MODES

文件打开模式速查

基本动作 r/w/x/a 与文本或二进制 t/b、更新标记 + 组合使用,例如 rb、w+。文本文件建议明确 encoding='utf-8'。

open() 常用文件模式
标记作用
r读取;文件必须存在
w写入;先清空已有文件,不存在则创建
x独占创建;已存在则报错
a追加;写入位置在文件末尾
t文本模式(默认)
b二进制模式,读写 bytes
+更新模式,同时允许读写;与 r/w/x/a 组合

COMMON PITFALLS

常见误区

  • 使用 except: 吞掉所有错误
  • 只测题目样例就认为程序正确
  • 文本文件不写 encoding
  • 修复报错表象却不验证根因

SCOPE & BOUNDARIES

适用边界

  • 在线判题的学生代码由独立 Worker 执行;文件系统、网络和资源权限必须受平台限制。
  • 二进制文件、JSON/CSV 和数据库各有专门格式与错误处理方式,不能按普通文本随意拆分。