【发布时间】:2012-04-12 03:14:59
【问题描述】:
所以我有一个用python编写的小游戏,如果你看到我之前的问题你就知道它是一个“太空入侵者”的克隆。
所以现在几乎所有东西都运行顺利,除了偶尔会弹出一个随机错误。这是完全随机的,它可能在发射了一些子弹之后发生,也可能根本不发生。
我有这个代码:
for bullet in bullets:
bullet.attack()
if bullet.posy<=-20:
bullet_draw=False
if bullet_draw==True:
bullet.draw()
for enemy in enemies:
if bullet.sprite.rect.colliderect(enemy.sprite.rect):
enemy.health-=1
bullets.remove(bullet)
bullet_draw=False
else:
bullet_draw=True
有时它会给我以下错误。
Traceback (most recent call last):
File "\Programming\space invaders\space.py", line 280, in <module>
bullets.remove(bullet)
ValueError: list.remove(x): x not in list
请注意,这个错误是完全随机的;即使不是,我也无法追踪它的起源。关于如何消除它的任何帮助?
【问题讨论】:
-
一般来说,捕获错误然后使用事后调试器 (
import pdb; pdb.post_mortem()) 是解决问题的好方法。在开发过程中,我通常在程序的入口点周围有一个包罗万象的 try-except 子句,这样我就可以立即调试甚至无法预料的问题。