首页 > 解决方案 > ArithmeticProgression 无限运行

问题描述

我正在关注Fluent 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

当我根据书测试它时:

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

我在 master · fluentpython/example-code 处用源代码逐行检查我的代码example-code/aritprog_v1.py
但没有发现任何问题。

标签: pythonpython-3.x

解决方案


index = + 1

应该

index += 1

这将为index每次迭代添加一个。照原样,这是index = +1or index = 1。因此,result循环之间 never 的值会发生变化。


推荐阅读