Задание 1. Утверждения об итераторах
Условие: какие утверждения о итераторах верны?
- a. Итератор можно использовать многократно.
- b. Итератор хранит все элементы в памяти.
- c. Итератор использует методы
__iter__()и__next__(). - d. Итератор можно создать с помощью
iter(iterable).
Что должно получиться: выбор одного или нескольких верных вариантов.
Задание 2. Утверждения о StopIteration
Условие: какое из утверждений о StopIteration верное?
- a.
StopIterationвызывается, когда итератор не может вернуть новый элемент. - b.
StopIterationвызывается при каждом вызовеnext(). - c.
StopIterationможно перехватить с помощьюtry-except. - d.
StopIterationникогда не вызывается автоматически.
Задание 3. Результат выполнения кода
Условие: какой результат будет у следующего кода?
numbers = [5, 10, 15]
iterator = iter(numbers)
for num in iterator:
print(num)
for num in iterator:
print(num)
- a. 5, 10, 15, 5, 10, 15
- b. 5, 10, 15
- c. 5, 10
- d. 5, 10, 15, Ошибка
StopIteration
Задание 4. Результат itertools.cycle
Условие: какой результат выдаст код?
import itertools
letters = ["A", "B", "C"]
cycled = itertools.cycle(letters)
print(next(cycled))
print(next(cycled))
print(next(cycled))
print(next(cycled))
- a. A, B, C, A
- b. A, B, C, C
- c. A, B, C, Ошибка
StopIteration
Задание 5. Утверждения о генераторных выражениях
Условие: какие утверждения о генераторных выражениях верны?
- a. Генераторное выражение использует круглые скобки.
- b. Генератор хранит все элементы в памяти.
- c. Генератор можно использовать только один раз.
- d. Генераторное выражение сразу создаёт список.
Задание 6. Генерация безопасных паролей ★
Условие: напишите программу, которая генерирует все возможные пароли длиной 4 символа по следующим правилам:
- пароль содержит хотя бы одну заглавную букву, одну строчную букву и одну цифру;
- символы не повторяются;
- соседние символы не могут быть расположены подряд в таблице символов (разница
ord()не равна 1); - все подходящие пароли записываются в файл
valid_passwords.txt.
Данные:
from string import ascii_lowercase, ascii_uppercase, digits
Подсказка: используйте itertools.permutations для перебора и генераторное выражение для фильтрации, чтобы не хранить все перестановки в памяти одновременно.
Задание 7. Сумма квадратов чётных чисел (дополнительно)
Условие: напишите генераторное выражение, которое возвращает квадраты чётных чисел из range(20), и выведите их сумму.
Что должно получиться: одно число — сумма квадратов 0, 2, 4, ..., 18.