You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三辆汽车瞬时速度计算Python程序结果不符,请求排查错误

三辆汽车瞬时速度计算程序错误分析

需求说明

计算三辆汽车瞬时速度变化,具体规则:

  • 汽车A初始以42.0 mph向北行驶(规定向北为正方向)
  • 看到限速标志后,A减速至20.0 mph
  • 汽车B初始以50.0 mph向南行驶(速度值为-50.0)
  • 汽车B的加速度为汽车A减速度的三分之二
  • 汽车C初始静止,随后向北行驶,速度为汽车B当前速度的两倍(取速度绝对值的两倍)
  • 汽车A刹车掉头向南,加速至汽车B与汽车C速度之和的一半

输出要求:

Car A: xxx
Car B: yyy
Car C: zzz

附加规则:

  • 必须通过变量/常量更新速度,禁止直接硬计算结果
  • 向北为正,向南为负;速度(速率)为非负值,是速度值的绝对值
  • 加速时速度绝对值增大,减速时绝对值减小

现有代码

# Initiate variables at default values
carA = 42.0
carB = -50.0
carC = 0
speedLimit = 20.0

# Updating all variables for next stage
carA = speedLimit # carA decelerated to speed speedLimit
carB = round(-50.0 + (22 * 2/3), 1)
carC = 50.0 * 2
carA = round((carB + carC) / 2, 1)

print("Car A: " + str(carA) + "\nCar B: " + str(carB) + "\nCar C: " + str(carC))

输出对比

  • 程序实际输出:

    Car A: -20.0
    Car B: -22.0
    Car C: 44.0

  • 预期输出:

    Car A: -97.0
    Car B: -64.7
    Car C: 129.3

错误分析

1. 汽车B的加速度方向逻辑错误

汽车A的减速度为初始速度与减速后速度的差值:42.0 - 20.0 = 22.0。汽车B向南行驶(负方向),且是加速状态(速度绝对值增大),因此B的速度应该在初始值基础上减去加速度(让数值更负)。

现有代码中-50.0 + (22 * 2/3)的计算会让B的速度绝对值变小(实际是减速),完全违背需求,正确计算应为carB = carB - (22 * 2/3),得到约-64.7的结果。

2. 汽车C的速度未依赖更新后的变量

需求明确要求C的速度是汽车B当前速度的两倍,但现有代码直接硬编码了B的初始速度50.0进行计算,违反了“使用变量更新”的规则。正确写法应为carC = abs(carB) * 2,基于更新后的B的速度计算。

3. 汽车A最终速度的逻辑理解错误

需求中A掉头向南行驶,加速至的是B与C的速率(速度绝对值)之和的一半,且方向为南(速度值为负)。现有代码错误计算了B和C的矢量速度之和的一半,正确计算应为carA = - (abs(carB) + carC) / 2,代入正确的B、C值后得到-97.0。

4. 变量更新顺序不符合依赖关系

现有代码未遵循“先更新B,再用B更新C,最后用B、C更新A”的依赖顺序,导致所有后续计算都基于错误的中间值,完全偏离预期结果。

修正后的示例代码

# 初始化变量
carA = 42.0
carB = -50.0
carC = 0.0
speedLimit = 20.0

# 步骤1:A减速至限速值,计算A的减速度
carA_deceleration = carA - speedLimit
carA = speedLimit

# 步骤2:更新B的速度(向南加速,速率增加)
carB_acceleration = carA_deceleration * (2/3)
carB -= carB_acceleration
carB = round(carB, 1)

# 步骤3:更新C的速度(向北,速率为B当前速率的2倍)
carC = abs(carB) * 2
carC = round(carC, 1)

# 步骤4:A掉头向南,加速至B和C速率之和的一半
carA_final_speed = (abs(carB) + carC) / 2
carA = -carA_final_speed
carA = round(carA, 1)

# 输出结果
print(f"Car A: {carA}")
print(f"Car B: {carB}")
print(f"Car C: {carC}")

运行后输出与预期一致:

Car A: -97.0
Car B: -64.7
Car C: 129.3

内容的提问来源于stack exchange,提问作者user21489407

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:27:19