Kodomo

Пользователь

Задачи

Напоминаю: каждая функция должна сопровождаться самодокументацией и примерами для doctest

  1. Создайте модуль task2.py, в нём:

  2. Опишите функцию-генератор count(n), которая выдаёт числа из натурального ряда начиная с n

  3. (Очень полезно для тестирования предыдущей) Опишите функцию-генератор take(n, iterable), которая выдаёт первые n элементов из iterable

  4. Опишите функцию-генератор zerocross(itrable), которая получает на вход итератор (или список) чисел и возвращает из них те, которые предшествуют смене знака. Т.е list(zerocross([-1, -2, 3, 5, 18, -1, 3])) == [-2, 18, -1]

  5. Опишите функцию-генератор flatten(iterable), которая получает на вход дерево, представленное скобочной структурой (но в роли скобок могут стоять любые итераторы), и обходит последовательно листья этого дерева.1

  1. Мне кажется, отличить лист от ветви тут ничем, кроме try по-честному не получится; разве что, hasattr(iterable, '__iter__'). Выбор на ваш вкус. (1)