调用列表中的列表时出现索引错误

问题描述

我对 python 非常陌生,正在尝试使用 pygame 制作国际象棋游戏。对于棋子的位置(特别是第一个 pawn),我在一个列表中有一个列表,该列表引用了第一个列表中的索引。稍后当这个列表被调用时,当它们肯定在范围内时,我得到“IndexError:list index out of range”......希望有一点知识的人可以解释这个吗?

我想不出另一种方法来将碎片的位置分配给它们的变量,而且错误并不完全准确,所以老实说我不知道​​。

pawnA2 = [WHITE_PAWN,1,2]
pawnA2 == [WHITE_PAWN,2,[(pawnA2[1]),(pawnA2[2] + 1)]]

200 行之后...

for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONDOWN:
        if ((pawnA2[1] - 1) * 100 + 5 ) < event.pos[0] < (pawnA2[1] * 100 + 5 ) and (8 - pawnA2[2]) * 100 + 5 < event.pos[1] < (((8 - pawnA2[2]) + 1) * 100 + 5 ):
            print("yes")
            screen.blit(MOVABLE_SPACE,(((pawnA2[3][0]) - 1) * 100 + 30,(8 - pawnA2[3][1]) * 100 + 30))
        else:
            screen.blit(third_surface,(5,505))
update_screen()

错误中引用的行是:

screen.blit(MOVABLE_SPACE,(8 - pawnA2[3][1]) * 100 + 30))

解决方法

您在 == 赋值中使用 = 而不是 pawnA2,导致语句的计算结果为 false 而不更改 pawnA2