Дополнительные темы

Генераторы

  1. Напишите генератор, который генерирует последовательность чисел Фибоначчи. Первые два значения — это единицы, каждое следующее значение равно сумме двух предыдущих: $1, 1, 2, 3, 5, 8, 13, 21, \ldots$
  2. Напишите генератор, который перечисляет все символы заданного текстового файла. В этой и следующей задаче файл может быть очень большим, поэтому не читайте его сразу целиком функцией read().
  3. Напишите генератор, который перечисляет все слова заданного текстового файла. Как и раньше, слова — это последовательности непробельных символов, в начале и конце которых нет знаков препинания.
  4. Напишите генератор, который получает на вход два перечисления, и возвращает кортежи из пар значений. Например, zip([10, 20, 30], "abc") должно вернуть перечисление (10, 'a'), (20, 'b'), (30, 'c').
  5. Напишите функцию-генератор, который возвращает бесконечную последовательность $1, 2, 2, 3, 3, 3, 4, 4, 4, 4, \ldots$. В этой последовательности каждое число повторяется столько раз, чему оно равно. После этого напишите функцию, которая возвращает первые $n$ членов этой последовательности.
    1. Есть и другие способы вернуть первые $n$ членов такой последовательности. Попробуйте их придумать. Способы должны быть принципиально разные, это не должны быть одни и те же циклы, вложенные разными способами.