我希望能够执行以下代码:
for i in Squares(5, 50):
print(i)
现在使用循环很容易实现,但是我想使用迭代器.
所以我定义了以下类:
import math
class Squares(object):
def __init__(self, start, stop):
self.start = start
self.stop = stop
def __iter__(self):
return self
def __next__(self):
start = self.start
stop = self.stop
squareroot = math.sqrt(start)
if self.start > self.stop:
raise StopIteration
if squareroot == math.ceil(squareroot):
start += 1
但目前这是无数次返回无.这意味着必须是none,因为StopIteration正在执行,即使它不应该执行.我认为我的if squareroot == math.ceil(squareroot):条件是正确的,因为我单独测试它,但我无法弄清楚要改变什么来获得我想要的输出.任何帮助表示赞赏.
编辑:对于如下代码:
for i in Squares(4, 16):
print(i)
我希望输出为:
4
9
16