所以我試圖做一個模擬自由落體的代碼,除了代碼從'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轉換爲浮點數?他們不是已經漂浮了嗎? –