0

嘿社区, 我有一个我似乎无法解决的问题。基本上我使用一个全局列表并希望在一个while循环中访问某些索引这是我的设置:

PossibleJumps = [
[[1,2],1,[2,4]],
[[3,4],1,[2,3]],
[[2,5],1,[1,1]],
[[1,3],0,[1,5]],
[[4,5],0,[1,4]],
[[6,6],0,[1,2]]]

以及被调用以执行操作的函数:

def buildPJsphere(level, box):
I = 1
while len(PossibleJumps) * 4 > I:
    CurrentJumps = PossibleJumps[I-1]
    CurrentJumpRL = CurrentJumps[0]
    CurrentJumpHD = CurrentJumps[1]
    CurrentJumpFB = CurrentJumps[2]

             .......

    I += 1

如果我运行代码,我会在第二个代码的第 4 行收到消息“IndexError: list index out of range”。

CurrentJumps = 可能的Jumps[I-1]

感谢您的所有帮助 - 提前感谢,Marco

4

1 回答 1

3

您的 while 条件失败。您基本上是在说 continue whilei小于PossibleJumps. 根据定义,它大于 的大小PossibleJumps。因此,当Iget 太大时,它会超出数组的范围。

顺便说一句PossibleJumps,您只需要担心外部大小,即将您的 while 条件更改为

while I < len( PossibleJumps ):
    CurrentJumps = PossibleJumps[I-1]
    ...

这应该可以解决您的问题,并且仍然可以让您访问所有子列表。

附带说明,使用print对于跟踪错误很有用。在此,由于它无法正常工作,您可以尝试

print I
print PossibleJumps[ I ]

就在失败的线上方。然后您可以看到索引变得太大,并且该print PossibleJumps[ I ]行会失败,这表明您不能使用那么大的值来引用数组。

于 2013-08-28T22:18:21.097 回答