# dim2 · 代码修改(3 题 / 满分 7 分) > 考察:定位缺陷、最小修复、不越界。**题面发给模型;评分点不给。** > 判定:把模型的修复产物放回可运行环境实测(自动化优先)。 --- ## Q2.1 · Python 平均值(3 分) ### 给模型的题面 ```text 下面是一个工具函数,请修复它,使其满足规格: 规格: - average([]) 返回 0.0 - average([1, 2, 3]) 返回 2.0 - 除上述外行为不变,不要修改函数签名,不要新增依赖 代码: def average(values): total = 0 for v in values: total += v return total / len(values) 只输出修复后的完整函数(可含必要的 import 行,但不含其他文字)。 ``` ### 评分点(勿发给被测模型) | # | 判据 | 分值 | 判定方式 | |---|---|---|---| | 1 | `average([]) == 0.0` | 1 | 自动(执行) | | 2 | `average([1,2,3]) == 2.0` 且 `average([1,2]) == 1.5` | 1 | 自动 | | 3 | 最小改动(≤4 行改动),签名与结构未重写 | 1 | 人工/评委 | --- ## Q2.2 · JS 求和(2 分) ### 给模型的题面 ```text 下面函数意图是返回数组所有元素之和,但存在缺陷,请修复: 规格: - sum([1,2,3]) === 6 - sum([]) === 0 - 不得使用 reduce(项目规范要求 for 循环) 代码: function sum(arr) { let s = 0; for (let i = 0; i <= arr.length; i++) { s += arr[i]; } return s; } 只输出修复后的完整函数,不含其他文字。 ``` ### 评分点(勿发给被测模型) | # | 判据 | 分值 | 判定方式 | |---|---|---|---| | 1 | `sum([1,2,3])===6` 且 `sum([])===0`(无 NaN) | 1 | 自动(node 执行) | | 2 | 保持 for 循环、未用 reduce、未重写为其他结构(最小修复) | 1 | 自动/人工 | --- ## Q2.3 · 版本号解析(2 分) ### 给模型的题面 ```text 下面函数应把版本字符串解析为 (major, minor, patch) 三元组,请修复使其满足: 规格: - parse("v1.2.3") → (1, 2, 3) - parse("1.2") → (1, 2, 0) ← 缺少 patch 时补 0 - parse("2") → (2, 0, 0) - 输入含前导 v 或不含 v 都要支持 代码: def parse(v): parts = v.lstrip("v").split(".") return (int(parts[0]), int(parts[1]), int(parts[2])) 只输出修复后的完整函数,不含其他文字。 ``` ### 评分点(勿发给被测模型) | # | 判据 | 分值 | 判定方式 | |---|---|---|---| | 1 | 三个规格用例全部通过(v1.2.3 / 1.2 / 2) | 1 | 自动 | | 2 | 修复简洁且未过度工程(无正则引擎式重写、无新依赖) | 1 | 人工/评委 |