[python]在利用随机数进行计算的过程中出现的

问题遇到的现象和发生背景

我在写大学实验报告的时候编写了几行代码,目的是随机生成一些汽车数据,对其进行计算,最后输出。
但最后发现运行结果不完全,且没有报错

问题相关代码,请勿粘贴截图
import random


#匀减速运动求距离函数
def lenth(v,a):
    d = 0
    d = 0.5 * v**2 / a

#这里的*a修改成/a时会出现问题,不知道原因

    return d

#提前相撞确定位置
def pre_hit(pre,aft,v,t,a):
    j = 0.01
    while pre > aft :
        j += 0.01
    x = v*t + v*j + 0.5*a*(j**2)
    return x

#主要功能函数,确定数值与计算  
def main():
    #随机数
    x1 = random.uniform(100,150)    #前车距离x1[100,150]
    v1 = random.uniform(60,80)      #前车初始速度v1[80,100]
    a1 = random.uniform(10,15)      #前车加速度a1[[3,8]
    t0 = random.uniform(5,20)       #前车刹车时刻t0[5,20]
    T  = random.uniform(0.3,1)      #后车反应时间T[0.3,1]
    v0 = random.uniform(60,80)      #后车初始速度v0[80,100]


    #计算

    #两车初始距离X
    X = x1

    #两车制动距离
    d3 = lenth(v1,a1)           #前车制动距离


    a0 = abs(( v1 - v0 )/T)     #后车加速度a0 = T^-1 * (V1  - V0)

    d2 = lenth(v0,a0)           #后车制动距离

    d1 = v0 * T                 #后车制动前行驶距离

    Locat1 = d3 + x1            #停车后前车位置

    Locat0 = d1 + d2            #停车后后车位置

    #判断是否撞车

    L = d3 - d2 - d1            #两车距离
    if L >= 0 :
        print('两车未相撞')
        print('前车初始位置为:' + str(x1))
        print('前车初始速度为:' + str(v1) + 'm/s')
        print('前车加速度为:'   + str(a1) + 'm/s^2')
        print('后车初始速度为:' + str(v0) + 'm/s')
        print('后车加速度为:'   + str(a0) + 'm/s^2')
        print('两车相距'         + str(L)  +'m')
        print('两车最后位置分别为  前车:' + str(Locat1) +'  后车:' + str(Locat0) )
        print('------我是分割线------')
    else:
        x = pre_hit(Locat1,Locat0,v0,T,a0)
        print('两车相撞')
        print('前车初始位置为:' + str(x1))
        print('前车初始速度为:' + str(v1) + 'm/s')
        print('前车加速度为:'   + str(a1) + 'm/s^2')
        print('后车初始速度为:' + str(v0) + 'm/s')
        print('后车加速度为:'   + str(a0) + 'm/s^2')
        print('最后两车的位置均为:' + str(x))
        print('------我是分割线------')        



#循环,可调整次数
time = input('请输入模拟次数:\n')

for i in range(int(time)):
    print('第' + str(i + 1) + '次模拟')
    main()
    i += 1

#停留界面
q = 1
while q != 'quit':
    q = input('输入’quit‘退出\n')


运行结果及报错内容
请输入模拟次数:
10
第1次模拟
两车相撞
前车初始位置为:122.54887012238481
前车初始速度为:60.24171919687605m/s
前车加速度为:12.494151247407284m/s^2
后车初始速度为:66.5969905267397m/s
后车加速度为:6.891401340771879m/s^2
最后两车的位置均为:62.08226220801786
------我是分割线------
第2次模拟
两车相撞
前车初始位置为:101.40015769902477
前车初始速度为:61.033491917515455m/s
前车加速度为:14.498470363316962m/s^2
后车初始速度为:69.27293574769249m/s
后车加速度为:11.563440283817119m/s^2
最后两车的位置均为:50.053225428955734
------我是分割线------
第3次模拟        #到这里就没有显示了

我的解答思路和尝试过的方法

最开始的lenth函数中的公式是

d = 0.5 * v**2 * a

此时能够正常输出,但是结果并不符合常理
我发现是公式写错了
所以我将公式的’*a‘修改为’/a‘,开始出现问题

d = 0.5 * v**2 /a

同时我注意到出现问题的似乎是这行代码


x = pre_hit(Locat1,Locat0,v0,T,a0)
我想要达到的结果

希望能够了解出现问题的原因