IndexError: список индексов вне диапазона при назначении значений для кортежей из цикла for - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь создать два набора кортежей, которые будут использоваться в качестве координат для цвета квадратов шахматной доски, но я не могу избавиться от ошибки: «IndexError: список индексов вне диапазона».

У вас есть идея, почему он возвращает эту ошибку?

alpha = ["a","b","c","d","e","f","g"]

chessSquareBlack = []
chessSquareWhite = []

for i in range(8):
    for j in range(8):

        if ((i+1) % 2 == 0 and (j+1) % 2 != 0) or (i+1) % 2 != 0 and (j+1) % 2 == 0:
            chessSquareBlack.append(((alpha[i]),(j+1)))

        elif ((i+1) % 2 != 0 and (j+1) % 2 == 0) or (i+1) % 2 == 0 and (j+1) % 2 != 0:
            chessSquareWhite.append(((alpha[i]), (j+1)))

Ответы [ 2 ]

1 голос
/ 11 ноября 2019
alpha = ["a","b","c","d","e","f","g"]

chessSquareBlack = []
chessSquareWhite = []

Вместо 7 или 8 вы можете проверить длину списка «альфа» и использовать его в цикле for, как показано ниже. Это будет общим и, следовательно, вам не придется каждый раз жестко его кодировать:

range (len (alpha))

for i in range(len(alpha)):
    for j in range(len(alpha)):
    #enter code here
1 голос
/ 11 ноября 2019

Ваш список alpha имеет длину 7, но вы выполняете итерацию до 7. Поскольку python начинает индексирование с 0, вы получаете IndexError.

Просто измените range(8) на range(7) и вы хороши.

Однако следует сказать, что в вашем втором операторе if для белых квадратов что-то не так с вашими условиями, поскольку оно никогда не открывается, так как условие всегда false.

...