摆锤水平位移计算Python代码结果异常,求问题排查
问题排查与修正方案
我帮你找出了代码里的几个关键问题,一步步来梳理:
1. 循环范围遗漏
你需要输出X(0)到X(9)共10个结果,但range(0,9)只会生成0到8的整数,直接漏掉了T=9的情况。改成range(10)就能完美覆盖0到9的所有目标时间点。
2. 公式括号位置错误
原公式的结构是:
X(T) = L × cos(A × cos(T × √9.8/L)) - L × cos(A)
但你的代码把- L × cos(A)整个塞进了math.cos()的参数里,这完全扭曲了原本的计算逻辑!正确的做法是先算出L*math.cos(...)的结果,再单独减去L*math.cos(A)。
3. 输出格式优化(匹配示例要求)
示例里的输出保留了四位小数,直接打印浮点数可能会出现多余位数或科学计数法,建议用格式化输出统一控制小数位数。
修正后的代码
import math L = float(input()) A = float(input()) for T in range(10): # 覆盖0到9共10个时间点 # 拆分公式为两个项,避免括号嵌套出错 cos_inner = A * math.cos(T * math.sqrt(9.8 / L)) term1 = L * math.cos(cos_inner) term2 = L * math.cos(A) x = term1 - term2 # 格式化输出四位小数,和示例结果对齐 print("{0:.4f}".format(x))
测试验证
用示例输入53.1和0.8运行:
- T=0时,
cos(0)=1,term1和term2相等,相减结果为0.0,和示例第一行一致; - T=1时,计算结果约为2.6689,完全匹配示例第二行输出。
内容的提问来源于stack exchange,提问作者xepo
相关产品推荐
相关产品推荐

