Python 如何停止迭代

Python 如何停止迭代,python,iteration,pygame,Python,Iteration,Pygame,我用迭代的方法编写了这段代码,但我一直得到一个错误。不知道它为什么要这样做。我对这种类型的编程很陌生,并在我创建的游戏中使用它。我对这个网站也不熟悉,所以请耐心等待。此代码将显示爆炸。当它通过爆炸图像时,一切都很好,直到它结束,我得到以下错误: Traceback (most recent call last): File "C:\Users\Steve\Desktop\Project April\Alien Metor Storm v1_4\AlienMetorStorm.py", lin

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

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

这里的任何帮助都将不胜感激

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

def update(self):
     try:
         self.image = next(self.image_iter)
     except StopIteration:
         pass #move on, explosion is over ...
或者,
next
builtin允许您通过传递第二个参数在iterable用尽时返回一些特殊的内容:

def update(self):
    self.image = next(self.image_iter,None)
    if self.image is None:
        pass #move on, explosion is over ...

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

def update(self):
     try:
         self.image = next(self.image_iter)
     except StopIteration:
         pass #move on, explosion is over ...
或者,
next
builtin允许您通过传递第二个参数在iterable用尽时返回一些特殊的内容:

def update(self):
    self.image = next(self.image_iter,None)
    if self.image is None:
        pass #move on, explosion is over ...

我不确定你到底想更新什么,但这里有一个发电机版本,你可以使用,这样你就不需要外部iter了

def update(self):
    for image in self.images:
        self.image = image
        yield
或者如果你想永远迭代

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

我不确定你到底想更新什么,但这里有一个发电机版本,你可以使用,这样你就不需要外部iter了

def update(self):
    for image in self.images:
        self.image = image
        yield
或者如果你想永远迭代

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

如果动画应该永远重复,将这样做。不知道
next()
的第二个参数,加上一个@TokenMacGuy——另一个几乎从未使用过的参数是
iter
(与1参数形式不同)的2参数形式,如果动画应该永远重复,就会这样做。不知道
next()
的第二个参数,加上一个@TokenMacGuy——另一个几乎从未使用过的是iter的2参数形式(与1参数形式不同)