如何计算汽车的瞬时速度?

问题描述 投票:0回答:1

我需要编写一个程序来改变3辆车的瞬时速度。进一步解释如下:

  • A 车以 42.0 英里每小时 (mph) 的速度向北行驶。
  • A车看到“20”标志后,减速至限速。
  • B 车以 50.0 英里/小时的速度向南行驶。
  • B 车的加速量是 A 车减速量的三分之二。
  • C 车静止不动。
  • C 车开始以 B 车两倍的速度向北行驶。 (速度是速度的绝对值。)
  • A车随后刹车掉头,现在正在向南行驶。它加速到 B 车和 C 车速度总和的一半。

我必须打印出如下所示的速度:

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

出了什么问题?

python performance integer rounding velocity
1个回答
0
投票

这里你没有考虑“文字问题”,也没有考虑正负情况。

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 之前使用该值即可。

© www.soinside.com 2019 - 2024. All rights reserved.