嗨社区, 我有一个我似乎无法解决的问题。 基本上我使用全局列表并希望在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
如果我运行代码,我会得到消息“IndexError:list index out of range” 在第二行代码的第4行。
CurrentJumps = PossibleJumps [I-1]
感谢您的所有帮助 - 提前致谢, 马可
答案 0 :(得分:3)
你的状况失败了。你基本上说继续i
不到PossibleJumps
长度的四倍。根据定义,它大于PossibleJumps
的大小。因此,当I
变得太大时,它会超出数组的范围。
顺便说一下,您使用的是PossibleJumps
,您只需要担心外部尺寸,即将您的时间条件更改为
while I < len( PossibleJumps ):
CurrentJumps = PossibleJumps[I-1]
...
这应该可以解决您的问题,并且仍然允许您访问所有子列表。
附注,使用print
对于追踪错误非常有用。在这个,因为它不能正常工作,你可以尝试
print I
print PossibleJumps[ I ]
在失败的线上方。然后你可以看到索引变得太大了,print PossibleJumps[ I ]
行会失败,显示你不能使用那么大的值来引用数组。