【发布时间】:2020-05-14 15:15:44
【问题描述】:
每次我运行这个程序,我都会得到这个错误:
ValueError: list.remove(x): x not in list
我试图在单个外星人被螺栓击中时降低其生命值。如果它的健康状况为<= 0,则该外星人也应该被摧毁。同样,螺栓也会被破坏。这是我的代码:
def manage_collide(bolts, aliens):
# Check if a bolt collides with any alien(s)
for b in bolts:
for a in aliens:
if b['rect'].colliderect(a['rect']):
for a in aliens:
a['health'] -= 1
bolts.remove(b)
if a['health'] == 0:
aliens.remove(a)
# Return bolts, aliens dictionaries
return bolts, aliens
ValueError 发生在aliens.remove(a) 行上。澄清一下,aliens 和 bolts 都是字典列表。
我做错了什么?
【问题讨论】:
-
ValueError 在哪一行?
-
为了将来参考,这段代码的问题是我在外星人列表上循环了两次,这在尝试从列表中删除时会导致一些问题。删除第二个“for a in aliens”可以防止这个问题。
标签: python