我需要编写一个程序来改变3辆车的瞬时速度。进一步解释如下:
我必须打印出如下所示的速度:
A车:xxx
B车:yyy
C车:zzz
一些进一步的说明; 注 1:您不应该直接计算出速度。您需要使用变量或给定的常量来更新变量值。
注2:设北为正方向。这意味着,如果汽车向北行驶,则其速度为正;反之,则速度为正。如果它向南行驶,则速度为负。速度始终为非负值,并且是速度的绝对值。
注3:当汽车加速时,其速度的绝对值增加;相反,当汽车减速时,其速度的绝对值会减小。
到目前为止,我的代码如下:
# 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))
输出:
A车:-20.0
B车:-22.0
C车:44.0
预期:
A车:-97.0
B车:-64.7
C车:129.3
出了什么问题?
这里你没有考虑“文字问题”,也没有考虑正负情况。
B 车的加速度是 A 车变化的三分之二。 CarA 的变化是 (carA - speedLimit),即 22,但请记住 carB 正在向南行驶,因此它的速度为负值。所以,你最终需要从 carB 中减去 22。
CarC 然后以两倍 carB 的速度向北行驶。同样,carB 的速度为负,而 carC 需要为正。
最后,carA 将以 carB 和 carC 速度的平均值向南行驶(负速度),但它们的符号不同,因此您需要绝对值。
这有效;
# Initiate variables at default values
carA = 42.0
carB = -50.0
carC = 0
speedLimit = 20.0
print(carA, carB, carC)
# Updating all variables for next stage
carB = -(abs(carB) + (carA - speedLimit) * 2 / 3)
carC = abs(carB) * 2
carA = - (abs(carB) + abs(carC)) / 2
print(round(carA,1), round(carB,1), round(carC,1))
输出:
42.0 -50.0 0
-97.0 -64.7 129.3
请注意,您实际上并不需要
carA = speedLimit
行,因为我们在打印结果之前将其丢弃。我们只需要在使用它来更改 carB 之前使用该值即可。