我有一个函数可以在给定的时间间隔内打印正方形:
class Squares:
def __init__(self, min, max):
self.min = min
self.max = max
def __iter__(self):
return self
def __next__(self):
a_list = []
for i in range((self.max)+1):
a_list += [i**2]
if self.min <= self.max:
if self.min in a_list:
result = self.min
self.min += 1
return result
else:
self.min += 1
else:
raise StopIteration
import math
for i in Squares(5, 50):
print(i)
它应该打印9、16、25、49,但输出是:
^{pr2}$为什么会这样?在
每次变量结果不是完全平方时都返回None的原因是,如果未指定return,next()函数默认返回None。在
如果您必须在这个项目中使用迭代器,那么您必须构造代码,以便每次传递都返回一个值。在
另外,请注意,每次调用next()时,都会生成一个名为_list的全新数组,这相当低效。初始化该数组一次会更好。在
看看这个例子中的不同之处。在
相关问题 更多 >
编程相关推荐