arrow_back返回现场笔记
PYTHON 已发布 4 Aug 2026

考试编程:能得分的 Python 答案

如何在考试中写出真正能拿满分的 Python 代码——结构、边界情况和压力下的时间管理。

考试评卷员不会花二十分钟用调试器逐行运行你的代码。他们读一遍,也许读两遍,然后对照评分标准检查。一个忽视评分标准的可运行解决方案仍可能失分,而一个稍微粗糙但符合每个检查点的答案反而能得更高分。为考试写 Python 是一项与写实际项目不同的技能,值得单独练习。

读评分标准要在读两遍题目之前

大多数编程考试——AP CS A 风格的自由作答题、大学期中考、编程训练营评估——都会公布部分加分规则。一条典型的评分标准是这样的:"正确的循环结构 1 分,正确的返回值 1 分,处理空列表情况 1 分。" 如果你写了一个密集的单行代码,虽然答案正确但跳过了显式循环,有些评卷员即使输出正确也会扣分。

开始写代码前,找出评卷员可能单独检查的部分:

  • 函数签名与所要求的完全匹配(名称、参数顺序、返回类型)
  • 递归时的基础情况和递归情况
  • 循环边界(差一错误是单个最常见的失分点)
  • 边界情况:空输入、单元素输入、负数、重复值

先写成注释。# handle empty list# base case: n == 0。这只花十秒钟,但能保证你不会忘记评卷员要专门检查的情况。

组织代码使部分加分可见

比较两个"写一个函数返回列表中第二大的数"的答案:

def second_largest(nums):
    return sorted(nums)[-2]
def second_largest(nums):
    if len(nums) < 2:
        return None
    largest = second = float('-inf')
    for n in nums:
        if n > largest:
            second = largest
            largest = n
        elif n > second and n != largest:
            second = n
    return second

第一个对格式良好的输入是正确的,但在列表少于两个元素时会崩溃,在 [5, 5, 3] 这样的重复值上给出错答案(返回 5,根据规格可能是错的)。第二个更长,但每一条评分标准——边界情况、正确逻辑、正确返回——都是显式的,占据各自的行供评卷员打勾。在计时考试中,第二版本几乎总是得分更高,尽管打字花的时间更长。

不要过早优化,但也别留下明显的 bug

考试题很少考 Big-O 知识,除非题目直接说明。如果题目说"写一个查找重复值的函数",O(n²) 的嵌套循环就很好,除非题目指定大型输入或要求高效解决方案。花考试时间转换为基于集合的 O(n) 方案(题目没要求的情况下)是你拿不回来的时间。

不过有些错误无论如何都会扣分:

  • 不一致地用 == 而不是 is,导致逻辑 bug(在 Python 考试中罕见但在比较密集的题目中出现)
  • 迭代列表时改变它——for x in lst: lst.remove(x) 是经典的考试陷阱,会产生无声的错误输出
  • 忘记 return 改为打印——许多自动评分器检查返回值,不检查标准输出
  • range() 差一错误——range(len(nums)) vs range(len(nums) - 1) 值得每次都仔细检查

提交前手工追踪代码

在纸质考试和大多数在线编程考试中,你无法运行代码。挑一个小例子逐行追踪,记下变量值。这在两分钟内能捕捉约 80% 的逻辑错误,是你用剩余时间能做的最高价值的事。

对递归函数,至少追踪两层深度并显式写出基础情况被触发。评卷员经常单独给一分用来证明基础情况正确终止,与递归情况正确的那一分分开。

管理时间像管理资源,而不是事后才想

如果一个自由作答部分跨三个子问题值 9 分,大约平均分配时间,如果卡住超过预算就往下走——一个半完成但几乎正确的 (b) 部分得分比完美的 (a) 和空白的 (c) 的原始分数多。即使无法完成逻辑,也要写一个有正确签名的存根函数和 pass 或猜测;仅有正确的签名有时就值一分。

关于在考试室外写干净、可测试的 Python,以及在这些题目中频繁出现的数据结构,请查看 Korra Studio 上相关的 Python 和计算机科学段落。

本文由人工智能协助撰写,经 Michal Pilch(CISSP)审核并发布,Korra Studio。

准备好更进一步了吗?

这是来自 Korra Studio 知识库的笔记之一——该平台将每个主题与一对一指导相结合。

免费开始arrow_forward