Программа, входящая в бесконечный цикл

#python #class #for-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)
 

Комментарии:

1. if self.num <= self.num 10: разве вы не думаете, что это всегда так?

Ответ №1:

Вы можете реализовать это следующим образом:

 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 , как вы увеличиваете self.num на 1 каждый раз, вызывая next() , поэтому self.num 10 всегда будет выше, чем self.num .

Комментарии:

1. Ааа…. Хорошо… Большое спасибо за вашу помощь… Действительно ценю это

Ответ №2:

Условие теста if self.num <= self.num 10: в вашем классе всегда будет истинным, вот причина бесконечного цикла: