我希望能夠執行以下代碼:計算一個範圍(蟒蛇)內的平方數
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
什麼是O/P你期待? (3,4,5,6,7)? –
當'start'是一個正方形時,你只會遞增'start'。這意味着它會陷入第一個非正方形。 – Kittsil
@ Bhargav Rao我剛剛編輯:) – ASm