IndexError:列表索引超出范围楼梯算法

我想制定一种算法,计算一个人可以从每个楼梯跳多少个楼梯。 b是他的跳跃高度,c是每个楼梯的高度。

b = 7
c = [1,2,3,4,5,1]
indx = 1
indx1 = 1

for x in c:
    while x < b:
        if x + c[indx] < b:
            x = x + c[indx]
            indx += 1
            print(x)
        else:
            indx1 += 1
            indx = indx1

这段代码给了我这个输出:     3     追溯(最近一次通话):     6       文件“文件位置*”,第9行,在         如果x + c [indx]

我不知道为什么在不执行else语句时不跳过该内容...

dearyan421 回答:IndexError:列表索引超出范围楼梯算法

崩溃是因为您的while循环正在检查是否为x < b。 b为7,并且c中的所有值都小于7,因此它将检查整个数组。 indx从1(而不是0)开始,并在每次操作时递增,因此在最后一个元素上,它比数组中的最大索引大一个,并且会看到错误。>

您需要执行以下一项操作:

  • 更改while循环上的循环保护,以使其在离开数组之前停止
  • 在该if语句中运行之前,请检查indx是否太大
  • 以{0而不是1的值开始indx
  • indx用作列表中的索引时,请取消使用

选择。

,

我认为您需要像这样的代码那样使变量保持阈值检查器循环:

if __name__ == "__main__":

  b = 7
  c = [1,2,3,4,5,1]
  indx = 0
  indx1 = 0

  stop = 0

  for x in c:
    while stop < b:
       result = x + c[indx]
       print("check jump {}".format(result))

       if result < b:
         x = result
         indx += 1
         print("jump {}".format(x))

       else:
         indx1 += 1
         indx = indx1
         print("not jump {}".format(indx))

       stop = stop + indx

我在in的计算循环索引后放置了一个变量结果为value。希望对您有所帮助

本文链接:https://www.f2er.com/3064505.html

大家都在问