如何正确实现驾驶成本计算函数并避免常见输入与逻辑错误
本文详解如何编写符合题目要求的 driving_cost() 函数解决因错误读取输入、不当条件判断和过早返回导致的 eof 错误与输出失效问题并提供可直接运行的标准实现。在编程练习中尤其是涉及函数设计与输入输出控制的题目如本题的“Driving costs”一个看似微小的结构失误——例如在不需要用户输入的参数上强行调用 input()或在循环中误用 return 提前终止执行——就可能导致程序崩溃、无输出或逻辑错乱。本教程将带你从问题根源出发构建健壮、清晰且完全符合题意的解决方案。✅ 正确理解题目需求题目明确要求定义函数 driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven)仅返回对应里程的油费单位美元不负责打印主程序需读入两个浮点数汽车油耗miles_per_gallon和油价dollars_per_gallon固定计算三组里程10 英里、50 英里、400 英里并对每组调用函数一次分别输出结果每个结果保留两位小数使用格式化字符串 f{value:.2f} 实现。⚠️ 关键注意题目从未要求用户输入 miles_driven原代码中 miles_driven float(input()) 是冗余且危险的操作——当评测系统未提供第三行输入时input() 将触发 EOFError这正是你遇到“什么也不发生”的根本原因。标准实现含注释以下是符合所有要求、通过自动评测的参考代码复制AI写代码12345678910111213141516171819202122def driving_cost(miles_per_gallon, dollars_per_gallon, miles_driven):计算指定里程下的燃油费用美元Args:miles_per_gallon (float): 每加仑行驶英里数dollars_per_gallon (float): 每加仑汽油价格美元miles_driven (float): 实际行驶英里数Returns:float: 对应油费美元return(miles_driven / miles_per_gallon) * dollars_per_gallonif__name__ __main__:# 仅读取题目指定的两个输入油耗和油价miles_per_gallon float(input())dollars_per_gallon float(input())# 固定三组里程依次调用函数并格式化输出formiles in [10.0, 50.0, 400.0]:cost driving_cost(miles_per_gallon, dollars_per_gallon, miles)print(f{cost:.2f})❌ 原代码主要问题解析问题后果修正方式miles_driven float(input())强制读第三行输入 → 评测环境无此输入 → EOFError彻底删除该行miles_driven 由循环内变量提供if miles_driven None:比较的是字符串 None而非 Python 的 None 对象且 miles_driven 是 float 类型永远不等于字符串完全移除该分支逻辑——题目无动态输入需求无需条件判断return cost 在 for 循环内部函数在第一次迭代后立即返回循环无法继续 → 仅输出 10 英里的结果return 仅用于函数计算逻辑打印操作应在主程序中完成print() 写在 return 之后成为不可达代码dead code永不执行将 print() 移至主程序的循环体内? 补充说明与最佳实践函数职责分离driving_cost() 应专注“计算”不承担 I/O输入读取与结果输出统一由 if __name__ __main__: 块管理——这是专业代码的典型结构。数值计算逻辑验证公式 (miles_driven / miles_per_gallon) * dollars_per_gallon 等价于 miles_driven × (dollars_per_gallon / miles_per_gallon)即“每英里油费 × 总里程”物理意义清晰。用题目给定数据验证(50.0 / 20.0) × 3.1599 2.5 × 3.1599 7.89975完全匹配。格式化输出一致性使用 f{cost:.2f} 可确保 0.0 显示为 0.007.89975 显示为 7.90四舍五入符合题目精度要求。掌握这些要点后你不仅能顺利通过本题更能建立起对函数设计、输入控制与调试思维的坚实基础。