0

我是 Python 新手,我正在编写一个程序来计算分布式力的结果。我的方法是这样的:

force =[1,2,3,4,5]
distance =[2,3,4,5,6]

这个想法是将分布力的任何部分分解为 2 个三角形,其面积可以使用以下方法找到:

lowerarea = ((distance[i+1] - distance[i]) *force[i]) * 0.5
upperarea = ((distance[i+1] - distance[i]) *force[i+1]) * 0.5

这是我用于查找较低区域的 for 循环:

for i in range(0,len(force)):
lowerarea= (dist[i+1]-dist[i])*force[i]*0.5
print (f)

i = i+1

我显然得到了索引超出范围的错误,因为d[6]不存在一旦d[5]被评估,我该如何停止循环?

另外,如何将循环的输出保存f到新变量?

谢谢!

4

2 回答 2

1

索引超出范围的问题是因为您正在使用i = i+1. 删除该行,因为循环已经为您执行该增量。通过将它放在那里,您将 i 的值推到了超越len(force) - 1(正如其他人已经指出的那样,这是这些数组的最高索引)。

至于f,您在循环期间根本没有使用或更改它,那么为什么要打印它或尝试存储它的值呢?该值不会在此代码中的任何地方更改。

于 2013-10-21T02:28:17.847 回答
0

为什么不创建一个新列表?

results = []

for (...):
   results.append(f)

您的超出范围错误是由于len(force) == 6- 您想要len(force) - 1.

于 2013-10-21T02:25:14.363 回答