0
我應打印的平方在給定的時間間隔的函數:爲什麼我的程序在for循環中返回None?
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,但輸出是:
None
None
None
None
9
None
None
None
None
None
None
16
None
None
None
None
None
None
None
None
25
None
None
None
None
None
None
None
None
None
None
36
None
None
None
None
None
None
None
None
None
None
None
None
49
None
這是爲什麼?
你沒有從內部'else:'塊返回任何東西? –
如果數字不在列表中,那麼不需要返回,我是對的嗎? –
迭代器必須返回下一個值。如果沒有,那麼你會得到你目前所看到的。因此,將代碼更改爲a)生成僅包含正方形的列表或b)跳過非正方形的值。 –