План рассказа – за автором Бори Буркова. По подробности близок к конспекту.
Конспект рассказа – за автором Даниила Алексеевского.
Задачи
Напоминаю: каждая функция должна сопровождаться самодокументацией и примерами для doctest
Создайте модуль task2.py, в нём:
Опишите функцию-генератор count(n), которая выдаёт числа из натурального ряда начиная с n
(Очень полезно для тестирования предыдущей) Опишите функцию-генератор take(n, iterable), которая выдаёт первые n элементов из iterable
Опишите функцию-генератор zerocross(itrable), которая получает на вход итератор (или список) чисел и возвращает из них те, которые предшествуют смене знака. Т.е list(zerocross([-1, -2, 3, 5, 18, -1, 3])) == [-2, 18, -1]
Опишите функцию-генератор flatten(iterable), которая получает на вход дерево, представленное скобочной структурой (но в роли скобок могут стоять любые итераторы), и обходит последовательно листья этого дерева.1
Мне кажется, отличить лист от ветви тут ничем, кроме try по-честному не получится; разве что, hasattr(iterable, '__iter__'). Выбор на ваш вкус. (1)