Тестовые вопросы
Вопрос 1. Что делает следующий код?
import re
text = "Version 3.10, Build 2023-04-01, Update 12.5.1"
matches = re.findall(r"\d+\.\d+", text)
print(matches)
- Находит только целые числа.
- Находит все группы вида число.число.
- Находит все группы вида число.число.число.
- Находит все группы вида число любой символ число.
Вопрос 2. Что напечатает следующий код?
import re
text = "ID123, ID56, ID, ID78910"
print(re.findall(r"ID\d{2,4}", text))
['ID123', 'ID56']['ID123', 'ID56', 'ID7891']['ID123', 'ID56', 'ID', 'ID78']
Вопрос 3. Какой из шаблонов найдёт ВСЁ, кроме букв?
\D+[^a-zA-Z]+\W+[^\s]+
Вопрос 4. Что найдёт шаблон \B\d+\B?
- Все числа в начале строки.
- Числа, не стоящие на границе слова.
- Все числа.
- Числа, стоящие в начале слова.
Вопрос 5. Что делает re.compile()?
- Запускает регулярное выражение.
- Сохраняет шаблон для повторного использования.
Вопрос 6. Что выведет следующий код?
def outer():
text = "Привет"
def inner():
print(text)
return inner
hello = outer()
- Ошибка: text is not defined.
- Ничего не выведет.
ПриветПривет Привет
Вопрос 7. Укажи верные утверждения:
nonlocalможет изменять глобальные переменные.- Замыкание не сохраняет переменные, если внешняя функция завершена.
- Вложенные функции видят переменные enclosing-области.
- В Python нельзя возвращать функцию как значение.
Вопрос 8. Укажи, какие конструкции создают замыкание:
- Возвращаемая вложенная функция, использующая переменные внешней функции.
- Возвращаемая вложенная функция, не использующая переменные внешней функции.
- Использование
globalв функции. - Простая функция без вложенности.
Вопрос 9. Какой вывод будет у следующего кода?
def outer():
text = "Оригинал"
def inner():
text = "Копия"
inner()
print(text)
outer()
ОригиналКопия- Ничего не выведет.
Вопрос 10. Найди ошибку в декораторе:
def my_decorator(func):
def wrapper:
print("До")
func()
print("После")
return wrapper
Вопрос 11. Сопоставь часть декоратора с его назначением:
1. def decorator(func)
2. def wrapper()
3. func()
4. return wrapper
a. Определение вложенной функции
b. Возврат новой функции вместо оригинальной
c. Вызов исходной функции внутри новой
d. Получение функции как аргумента
Задание 1. Удаление HTML-тегов
Условие: реализуйте программу, которая удаляет все HTML-теги из строки.
Данные:
text = "<div>Hello, <strong>world</strong>!</div>"
Пример вывода:
Hello, world!
Подсказка: используйте re.sub и шаблон, который находит текст между < и >.
Задание 2. Уникальные IP-адреса
Условие: создайте функцию, которая возвращает другую функцию — обработчик IP-адресов. Обработчик принимает IP-адрес в виде строки и возвращает количество уникальных адресов, которые были переданы ранее. Используйте вложенную функцию и замыкание.
Пример вызова:
tracker = make_ip_tracker()
print(tracker("192.168.0.1"))
print(tracker("10.0.0.1"))
print(tracker("192.168.0.1"))
print(tracker("8.8.8.8"))
Пример вывода:
1
2
2
3