如何停止迭代

2024-04-24 12:11:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我用迭代的方法来编写代码,但我总是得到一个错误。不知道它为什么要这么做。我对这种类型的编程是新的,并在我创建的游戏中使用它。我也不太熟悉这个网站,所以请你耐心等待。这个代码显示了爆炸。当它逐步通过爆炸的图像,一切都很好,直到它结束,我得到这个错误:

Traceback (most recent call last):
  File "C:\Users\Steve\Desktop\Project April\Alien Metor Storm v1_4\AlienMetorStorm.py", line 560, in <module>
    main()
  File "C:\Users\Steve\Desktop\Project April\Alien Metor Storm v1_4\AlienMetorStorm.py", line 222, in main
    ships.update()
  File "C:\Python31\lib\site-packages\pygame\sprite.py", line 399, in update
    for s in self.sprites(): s.update(*args)
  File "C:\Users\Steve\Desktop\Project April\Alien Metor Storm v1_4\explosion.py", line 26, in update
    self.image = next(self.image_iter)
StopIteration

代码如下:

^{pr2}$

如有任何帮助,我们将不胜感激!在


Tags: 代码inpyprojectlineupdateusersfile
2条回答

StopIteration是迭代器用尽时引发的异常。您可以像任何其他异常一样捕获它:

def update(self):
     try:
         self.image = next(self.image_iter)
     except StopIteration:
         pass #move on, explosion is over ...

或者,next内置函数允许您在iterable耗尽时通过传递第二个参数返回特殊的值:

^{pr2}$

我不确定您到底想要update做什么,但是这里有一个生成器版本,您可以使用它,这样您就不需要外部iter了

def update(self):
    for image in self.images:
        self.image = image
        yield

或者你想永远迭代

^{pr2}$

相关问题 更多 >