Создание стека и итератора, который проходит через стек, используя цикл for

Должны быть 14 "2" и 36 "1" с.

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

  1. x - количество строк, назначенных 2
  2. y, - это количество строки, назначенные 1
  3. 2x + y = 64
  4. x + y = 50
  5. Решите для x и y.
1
задан Clueless 19 January 2019 в 04:47
поделиться

1 ответ

Ваш атрибут Iterator всегда будет None, потому что вы останавливаете итерацию, как только происходит первый вызов , следующий . Думайте о next как о том, что он вызывается для каждого элемента, пока нет больше элементов для обработки, из документации Python о __next__:

Возвращает следующий элемент из контейнера. Если других элементов больше нет, вызовите исключение StopIteration

Единственное, что вы можете сделать, это инициализировать self.Iterator длиной стека (в __iter__), а затем на каждом шаге уменьшать его пока вы не достигнете 0 (а затем поднимите StopItate):

def __iter__(self):
    self.Iterator = len(self.stack) - 1  # initialize to the index of the last element
    return self

def __next__(self):
    if self.Iterator >= 0:
        current_value = self.stack[self.Iterator]
        self.Iterator = self.Iterator - 1  # update for the next step
        return current_value
    else: # stop if self.Iterator is -1
        raise StopIteration
0
ответ дан kirbuchi 19 January 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: