python - 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
但没有发现任何问题。
解决方案
index = + 1
应该
index += 1
这将为index
每次迭代添加一个。照原样,这是index = +1
or index = 1
。因此,result
循环之间 never 的值会发生变化。
推荐阅读
- node.js - go-ethereum 签名提供与 nodejs ethers 不同的签名
- vue.js - 使用 Vue.js 从 url 返回 json 数据
- redis - Redisson 与 PCF Redis 按需服务 ERR 未知命令 `EVAL` 异常
- node.js - 如何在nodejs和angular中从mongodb获取数据
- python - Pandas 按组内的值分组和排序
- python - 具有多个 URL 作为输入的 Python 函数,它输出多个 DataFrame
- html - 两个组件触发同一个事件
- python - 在 Pytorch 中使用 YoloV3 进行对象检测中的列表索引超出范围错误
- python - 有没有办法以编程方式获取所有 Discord 频道消息(例如 Python)?
- java - Docker - 无法访问 jar 文件