Python 算术级数无限运行

Python 算术级数无限运行,python,python-3.x,Python,Python 3.x,我正在学习《流畅Python》一书的第14章控制流, 遇到以下代码的问题: class ArithmeticProgression: def __init__(self, begin, step, end=None): self.begin = begin self.step = step self.end = end def __iter__(self): result = type(self.begin +

我正在学习《流畅Python》一书的第14章控制流,
遇到以下代码的问题:

class ArithmeticProgression:

    def __init__(self, begin, step, end=None):
        self.begin = begin
        self.step = step
        self.end = end

    def __iter__(self):
        result = type(self.begin + self.step)(self.begin)
        forever = self.end is None
        index = 0
        while forever or result < self.end:
            yield result
            index = + 1
            result = self.begin + self.step * index
类算术级数:
定义初始化(self、begin、step、end=None):
self.begin=开始
self.step=step
self.end=结束
定义(自我):
结果=类型(self.begin+self.step)(self.begin)
永远=自我。没有终点
索引=0
而永远或结果
当我根据这本书进行测试时:

In [220]: ap = ArithmeticProgression(1, 1, 5)

In [221]: ap
Out[221]: <__main__.ArithmeticProgression at 0x1098b2160>

In [222]: list(ap)


#it run endless not return any result
#I should Ctrl+C to break it mandatory
[220]中的
:ap=算术级数(1,1,5)
In[221]:ap
出[221]:
In[222]:列表(ap)
#它运行无止境,不会返回任何结果
#我应该按Ctrl+C组合键来打破它
我用源代码逐行检查代码
但是没有发现任何问题

index = + 1
应该是

index += 1
这将在每次迭代中向
索引添加一个。按原样,这是
index=+1
index=1
。因此,
result
的值在循环之间不会改变

应该是

index += 1

这将在每次迭代中向
索引添加一个。按原样,这是
index=+1
index=1
。因此,
result
的值在循环之间永远不会改变。

end
None
时要小心,因为当您通过调用
list()对其进行迭代时,它也会无限运行
就像你做的那样当你的
结束
None
时要小心,因为当你迭代它时,它也会无限地运行-就像你做的那样调用
list()