Python 索引器:列出索引超出范围的空间入侵者
我想创建一个额外的敌人。我有一个在列表中循环的问题。但是当我这样做时,我不断地得到这个错误:Python 索引器:列出索引超出范围的空间入侵者,python,loops,Python,Loops,我想创建一个额外的敌人。我有一个在列表中循环的问题。但是当我这样做时,我不断地得到这个错误: enemyX[i] += enemyX_change[i] IndexError: list index out of range 这是我的密码: num_of_enemies = 10 number = 1 enemyX = [] enemyX_change = [] for i in range(num_of_enemies): enemyX.append(i) enemyX_c
enemyX[i] += enemyX_change[i]
IndexError: list index out of range
这是我的密码:
num_of_enemies = 10
number = 1
enemyX = []
enemyX_change = []
for i in range(num_of_enemies):
enemyX.append(i)
enemyX_change.append(3)
num_of_enemies += number
for i in range(num_of_enemies):
enemyX[i] += enemyX_change[i]
第一个循环以包含10个元素的
enemyX
结束
然后将1添加到
num\u of_敌人
,并尝试更改enemyX
的11个元素。在第一个循环中,将10个(num\u of_敌人的值)敌人添加到enemyX
。然后,通过将number
添加到num\u of_敌人
,num\u of_敌人变为11。但是,在第二个循环中,您不是在enemyX
中添加新的敌人,而是更改索引i
处的当前值。因此,当这个循环到达最后一个值时,您会得到一个错误,因为enemyX
中的索引10没有值
以下是我如何更改您的代码:
num_of_enemies = 10
number = 1
enemyX = []
enemyX_change = []
for i in range(num_of_enemies):
enemyX.append(i)
enemyX_change.append(3)
for i in range(num_of_enemies):
enemyX[i] += enemyX_change[i]
enemyX.append((num_of_enemies + number) + 3); //I'm adding 3 because that's what you've been adding as part of enemyX_change
根据您的一条评论,您希望在发生碰撞时添加一个新的敌人。 这是你想要的吗
num_of_enemies = 10
number = 1
enemyX = []
enemyX_change = []
for i in range(num_of_enemies):
enemyX.append(i)
enemyX_change.append(3)
for i in range(num_of_enemies):
#Perform position change
enemyX[i] += enemyX_change[i]
#Add new enemy if more than one enemy has this position
if enemyX.count(enemyX[i]) > 1:
#Arrays start from zero (last index in list is num_of_enemies - 1)
enemyX.append(num_of_enemies)
enemyX_change.append(3)
num_of_enemies += 1
在第一个循环之后,列表的长度为10,然后将1添加到
num\u of_敌人
中,因此当i=10
时,您将得到一个索引错误。在第一个循环中,在列表enemyX中添加了10个元素。但稍后在第二个循环中,您将访问根本不存在的enemyX[10]。我建议您在最初创建列表时使用num_of_敌人,并使用len函数跟踪沿路的计数。我正在制作一个游戏,有10个敌人='num_of_敌人',我想在每次一个敌人碰撞时添加1个敌人,所以你的解决方案很有帮助,但不幸的是,它对我的项目没有帮助。很抱歉!看来你已经解决了,谢谢!但在你回答之前,我想明白了!所以我添加了另一个变量:“num_of_敌人_full=100”,最大敌人数,我不断添加更多敌人