Python作业求助:实现基于E=mc²的质能转换命令行程序
爱因斯坦质能公式实现与代码修正
现有代码的问题点
sys.argv是列表类型,直接转float会报错,应该取sys.argv[1](命令行传入的第一个参数,索引0为脚本文件名)- 光速
c是固定常量,无需作为函数参数传入,函数仅需接收质量m即可 - Python3中
print是函数,必须加括号:print(e) - 未处理命令行未传参数的异常情况
- 缺少题目要求的至少3个测试用例
修正后的完整代码
import sys import math # 定义质能公式函数,仅接收质量参数m def einstein_equation(m): c = 299792458 # 光速常量(单位:米/秒) return m * math.pow(c, 2) # 测试用例执行函数 def run_tests(): test_masses = [1, 0.5, 2.5] # 3个不同质量值(单位:千克) print("=== 测试用例结果 ===") for mass in test_masses: energy = einstein_equation(mass) print(f"质量 {mass}kg → 等效能量:{energy} 焦耳") if __name__ == "__main__": # 命令行参数处理逻辑 try: if len(sys.argv) > 1: input_mass = float(sys.argv[1]) result_energy = einstein_equation(input_mass) print(f"输入质量 {input_mass}kg → 等效能量:{result_energy} 焦耳") else: # 未传入参数时自动运行测试用例 print("未传入命令行参数,自动执行测试用例:") run_tests() except ValueError: print("错误:请传入有效的数字类型质量值(单位:千克)")
代码使用说明
- 函数逻辑:
einstein_equation专注计算质能转换,光速作为内置常量,符合公式定义 - 命令行使用:
- 带参数运行:比如
python your_script.py 10,直接计算10kg质量对应的能量 - 无参数运行:自动执行预设的3个测试用例,输出不同质量的计算结果
- 带参数运行:比如
- 异常处理:捕获非法输入(如非数字参数),避免程序崩溃
内容的提问来源于stack exchange,提问作者babak mahmoudi
相关产品推荐
相关产品推荐

