如何正确实现驾驶成本计算函数并避免常见错误
本文详解如何编写符合要求的 `driving_cost()` 函数,解决输入逻辑混乱、提前返回、类型误判等典型问题,并规范输出10/50/400英里对应油费(保留两位小数)。在编程实践中,看似简单的函数题常因细节疏忽导致运行失败——如本例中反复出现的 EOF 错误、return 位置不当、字符串与 None 的混淆等。因此,程序不应调用 float(input()) 读取第3个输入,否则在自动评测
本文详解如何编写符合要求的 `driving_cost()` 函数,解决输入逻辑混乱、提前返回、类型误判等典型问题,并规范输出10/50/400英里对应油费(保留两位小数)。
在编程实践中,看似简单的函数题常因细节疏忽导致运行失败——如本例中反复出现的 EOF 错误、return 位置不当、字符串与 None 的混淆等。核心问题在于:题目明确要求固定计算 10、50 和 400 英里的成本,而非接收用户输入的任意 miles_driven。因此,程序不应调用 float(input()) 读取第3个输入,否则在自动评测环境中会因无后续输入而触发 EOFError。
正确的实现需严格遵循三点要求:
- ✅ driving_cost() 仅负责计算并返回成本(float),不执行打印;
- ✅ 成本公式为:(miles_driven / miles_per_gallon) * dollars_per_gallon(即“行驶里程 ÷ 油耗率 × 单价”,逻辑清晰且单位一致);
- ✅ 主程序中循环调用该函数三次,分别传入 [10, 50, 400],并对每个结果使用 f'{cost:.2f}' 格式化输出。
以下是完整、可直接提交的参考代码:
复制AI写代码
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
⚠️ 关键注意事项:
- 禁止在函数内打印或读取输入:driving_cost() 是纯计算函数,职责单一;I/O 操作统一在 main 中处理;
- 避免无效条件判断:原代码中 if miles_driven == 'None' 试图检测未输入,但 'None' 是字符串,而 Python 的空值是 None(无引号),且题目根本不要求此逻辑;
- 警惕 return 提前终止循环:return 在 for 循环内会立即退出函数,导致后续迭代和 print() 永远不会执行;
- 公式顺序不可颠倒:(dollars_per_gallon / miles_per_gallon) * miles_driven 虽数学等价,但 (miles_driven / miles_per_gallon) 更直观体现“所需油量”,降低理解与维护成本。
运行示例(输入 20.0 → 3.1599):
复制AI写代码
|
1 2 3 |
|
完全匹配样例输出 7.89975 ≈ 7.90(四舍五入到百分位)。掌握这一模式,不仅能通过评测,更能养成函数职责分离、输入输出解耦的专业编码习惯。
更多推荐



所有评论(0)