簡體   English   中英

程序進入無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM