制作游戏时反复出现TypeError: 'int' object is not iterable错误求解决
问题分析与修复方案
1. 直接导致TypeError的原因
你的代码里第一个循环写法错误:
for elem in(len(enemyList)):
len(enemyList)返回的是一个整数(列表的长度值),而for...in语句要求遍历的是可迭代对象(比如列表、range序列等),整数无法被迭代,这就是TypeError: 'int' object is not iterable的根源。
修复方式二选一:
- 若需要遍历列表的索引:
for elem in range(len(enemyList)): - 若直接需要列表中的元素:
for elem in enemyList:
2. wave_call函数中的逻辑无效问题
在wave_call函数里,你先初始化enemyX = [],接着写for elem in range(len(enemyX)):——此时enemyX是空列表,len(enemyX)等于0,range(0)不会生成任何迭代项,循环根本不会执行,导致你无法添加任何敌人数据。
修复方式:
先确定要生成的敌人数量,基于数量构建循环,示例如下:
def wave_call(): if wave == 1: global enemyList enemyX = [] enemyY = [] # 替换成你需要的敌人数量,比如生成8个敌人 for _ in range(8): x = random.randint(0, 1500) y = random.randint(0,750) enemyX.append(x) enemyY.append(y) enemyList.append("") screen.blit(enemy, (x, y))
另外注意:你开头的enemyList = []写在循环外部,会直接清空列表,若这不是你想要的初始化逻辑,需要调整位置避免覆盖已有数据。
内容的提问来源于stack exchange,提问作者Miguel Ferreira
相关产品推荐
相关产品推荐

