所以我写了这段代码
totalrefill, currentrefill = 0, 0
while currentrefill<=n:
lastrefill = currentrefill
while (currentrefill<n) and (x[currentrefill+1]-x[lastrefill]<=L):
currentrefill += 1
if currentrefill==lastrefill:
return "IMPOSSIBLE"
if currentrefill<=n:
totalrefill+=1
return totalrefill
x = [0, 2, 3.5, 5, 7, 8.5, 9.5]
L = 4
n = len(x)
print(min_refuels(x,n,L))
但我不明白为什么它显示列表索引超出范围。 如果有人收到并回答了,那就非常感谢
这里n=7。因此,如果currentrefill==6,则传递第一个while条件(while currentrefill<;=n)
然后在第二个测试中,您将进行第一个测试(currentfill<;n),该测试也通过了(currentfill为6,n为7)。然后尝试测试正确的部分。为此,您需要访问x[currentrefill+1],即x[7]。 由于python中的索引从0开始,x的最后一个索引是6,这就是为什么会出现超出范围的错误
您可以通过替换<;n由<;n-1(在这种情况下不会有错误)
在python列表中,索引从0开始。 所以第一个元素是
x[0]
,第二个元素是x[1]
等等, 因此,列表中的最后一个元素具有索引len(x) -1
,因此x[n]
超出范围在代码中编写
while currentrefill<=n:
,lastrefill = currentrefill
,x[lastrefill]
这将导致x[n]
,因为lastrelly=currentrelly<=N这就是错误的来源为了解决这个问题,您可以将
while currentrefill<=n:
更改为while currentrefill<n:
,将while (currentrefill<n)
更改为while (currentrefill<n)
相关问题 更多 >
编程相关推荐