Должны быть 14 "2" и 36 "1" с.
Вы можете перефразировать свою проблему следующим образом:
x
- количество строк, назначенных 2 y
, - это количество строки, назначенные 1 Ваш атрибут Iterator
всегда будет None
, потому что вы останавливаете итерацию, как только происходит первый вызов , следующий . Думайте о next как о том, что он вызывается для каждого элемента, пока нет больше элементов для обработки, из документации Python о __next__
:
Возвращает следующий элемент из контейнера. Если других элементов больше нет, вызовите исключение StopIteration
blockquote>Единственное, что вы можете сделать, это инициализировать
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