Почему я получаю эту ошибку индексов списка?

#python #list

Вопрос:

Извините, я новичок в программировании, поэтому извините, если мой вопрос тусклый. Я хочу загрузить эти изображения с помощью списка и цикла for, но я продолжаю получать эту ошибку списка, в которой говорится, что индексы списка должны быть целыми числами или фрагментами. Как я могу это исправить?

код:

 Images = ['K2', 'G2', 'S2', 'N2', 'L2', 'R2', 'B2', 'P2']

p = []
for n in Images:
    p.append(pygame.image.load(os.path.join('Assets', 'Pieces (set 1)', Images[n]   '.png')))
 

ошибка:

 p.append(pygame.image.load(os.path.join('Assets', 'Pieces (set 1)', Images[n]   '.png')))
TypeError: list indices must be integers or slices, not str
 

Комментарии:

1. n представляет каждый элемент Images списка. Таким Images[n] образом, часть вызывает ошибку.

Ответ №1:

Смотрите for Инструкции. Либо

 for i in range(len(Images)):
    p.append(pygame.image.load(os.path.join('Assets', 'Pieces (set 1)', Images[i]   '.png')))
 

или

 for name in Images:
    p.append(pygame.image.load(os.path.join('Assets', 'Pieces (set 1)', name   '.png')))
 

Ответ №2:

Рассмотрим, какие значения n принимают здесь : for n in Images: . n будет перебирать элементы в Images , таким образом n , имеет тип str . Вы не можете использовать строку в качестве индекса списка Images[n] . Вероятно, вы имели в виду построить цикл следующим образом: for n in range(len(Images)) . Тогда n будут целые числа от 0 до len(Images) - 1 .