所以我试图做一个模拟自由落体的代码,除了代码从'1'而不是'0'开始之外,它几乎全部完成了。我的代码是:Python:列表的第一项不是从0开始
def simulateFreeFall(mass,deltaT,simulationTime):
acceleration = 9.81
velocity = 0
length = 0
velocity1 = 0
length1 = 0
times = []
l = []
v = []
a = []
x = 0
timeStep = simulationTime/deltaT
while x < timeStep:
elapsedTime = deltaT * x
Dvelocity = acceleration * deltaT
velocity1 = Dvelocity + velocity
velocity = velocity1
v.append(velocity1)
a.append(acceleration)
Dlength = velocity1 * deltaT
length1 = Dlength + length
length = length1
l.append(length1)
times.append(elapsedTime)
x += 1
plt.plot(times, l, 'rs')
plt.title("Free Fall - No Friction")
plt.xlabel("Time")
plt.ylabel("Fall Length")
plt.grid(True)
plt.show()
print(l[0])
simulateFreeFall(70,0.01,60)
当我运行的代码列表中的“L”的第一长度是0.000981,而不是0我不知道我做错了什么它在技术上有什么应该是开始0.01秒后。
从代码中可以清楚地看到x从0开始,所以问题的标题看起来不准确。你能得到你的问题标题以匹配你所问的问题吗?也许像“为什么这个循环的第一项不是0?”这并不理想,但它更好。此外,这并不能解决你的问题,但为什么你将length1和elapsedTime转换为浮点数?他们不是已经漂浮了吗? –