Генераторы и итераторы · 6 из 16
Обход печи
В печи несколько полок, и обходчик выгребает их сверху вниз, каждую по одному разу. Пройденная полка пуста: вернуться к ней и выгрести второй раз нельзя — там уже ничего нет.
Что сделать
Сделайте печь, которую обходчик проходит сверху вниз ровно один раз.
Что приходит
polki— список полок сверху вниз
Что должен уметь
Объект — сам себе итератор: __iter__ отдаёт сам объект, __next__ — следующую полку, в конце — StopIteration; второй обход пуст.
Допишите класс Pech в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
list(Pech(["верхняя", "средняя", "нижняя"]))
['верхняя', 'средняя', 'нижняя']
Класс принимает список полок (строки) при создании.
Объект класса — сам себе итератор: его можно поставить в «for» и передать в «list». Метод «iter» возвращает сам объект. Метод «next» отдаёт следующую полку сверху вниз, а когда полки кончились — поднимает StopIteration. Повторный обход того же объекта не даёт ничего: полки уже пройдены.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.