[英]Program entering an infinite loop
我是編程新手,所以這可能是一個愚蠢的問題,但你能幫我解決這個代碼嗎..... 我試圖只打印數字“self.num”之后的前十個數字,但不知何故它只是進入一個我不得不終止的無限循環
class TopTen:
def __init__(self, num):
self.num = num
def __iter__(self):
return self
def __next__(self):
if self.num <= self.num+10:
val= self.num
self.num += 1
return val
else:
raise StopIteration
values = TopTen(5)
for i in values:
print(i)
你可以像這樣實現它:
class TopTen:
def __init__(self, num):
self.num = num
self.maxNum = num+10
def __iter__(self):
return self
def next(self):
if self.num < self.maxNum:
val = self.num
self.num += 1
return val
else:
raise StopIteration
for i in TopTen(5):
print(i)
# Prints
# 5
# 6
# 7
# 8
# 9
# 10
# 11
# 12
# 13
# 14
你有無限循環的原因是因為if self.num <= self.num + 10:
將總是評估為True
,因為你每次通過調用next()
將self.num + 10
增加 1 ,所以self.num + 10
會總是高於self.num
。
條件測試if self.num <= self.num+10:
在您的類中將始終為真,這就是無限循環的原因:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.