Python用for循环加载pygame图片触发列表索引错误怎么解决?
错误原因
- 遍历
for n in Images时,变量n直接拿到的是Images列表里的字符串元素(如'K2'、'G2'等),不是列表的整数下标 - 代码后续调用
Images[n]时相当于把字符串作为列表索引传入,违反Python列表索引必须为整数或切片的规则,因此触发类型错误
修复方案
方案1(推荐):直接使用遍历得到的元素
不需要再通过列表索引取值,直接用迭代取出的字符串拼接文件名即可:
import pygame import os 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)', n + '.png')))
方案2:遍历列表索引
如果你后续逻辑需要用到元素的下标,可以用enumerate同时遍历索引和元素:
import pygame import os Images = ['K2', 'G2', 'S2', 'N2', 'L2', 'R2', 'B2', 'P2'] p = [] for idx, file_name in enumerate(Images): # idx为当前元素的整数下标,可按需使用 p.append(pygame.image.load(os.path.join('Assets', 'Pieces (set 1)', Images[idx] + '.png')))
内容的提问来源于stack exchange,提问作者sdrr453e
相关产品推荐
相关产品推荐

