- •Теоретические вопросы
- •1. Какая реализация интерпретатора python является стандартной? Назовите популярные реализации других интерпретаторов и их особенности.
- •2. Какие парадигмы программирования поддерживает python. Кратко объясните их?
- •3/4. Что такое мутабельные и иммутабельные типы данных? Чем они отличаются? Приведите примеры мутабельных/иммутабельных типов.
- •5. Приведение стандартных типов данных к логическому. На основе чего оно работает и где принято применять?
- •6. Необходимо реализовать функцию, которая принимает переменное число аргументов. Какой инструмент python вы для этого используете? Объяснить его принцип работы.
- •7. Как использовать дефолтные аргументы функции и как их изменять? Возможные проблемы, связанные с ними.
- •8. Что такое оператор упаковки и распаковки, их сходства и отличия? Приведите примеры использования.
- •9. Как в python работает области видимости (локальный и глобальный контекст, видимость функций, тело операторов)?
- •10. Что такое lambda выражение, как оно работает и из чего строится? Напишите простейшее lambda выражение и приведите примеры, где его принято применять.
- •11. Перечислите набор встроенных в python функций, взятых из функционального программирования. Как они работают (принимаемые аргументы и результат работы), где их можно применять?
- •12. Что такое list comprehension? Реализуйте его и объясните, какие преимущества у него есть.
- •13. Что такое декоратор? На основе каких принципов python он устроен? Реализуйте простейший декоратор.
- •15. В чем отличие bound method от function? Синтаксический сахар при вызове методов у объекта класса.
- •16. Геттеры и сеттеры в python. Реализуйте класс, в котором будет одно поле и для работы с ним геттер и сеттер.
- •17. Работа со __slots__ в python. Зачем нужен данный инструмент, какие задачи выполняет, какие ограничения накладывает на объект класса и какие преимущества дает.
- •18. Реализация сокрытия полей и методов в python. Общепринятые соглашение о наименовании. Преимущества и недостатки такого подхода.
- •19. Функция super. Объяснить принцип ее работы.
- •20. Что такое “магические методы” в python? Их отличительная особенность в именовании. Какие задачи выполняют? Назвать пять штук с объяснением их работы.
- •21. Как работают getattr, setattr, hasattr и т.Д.? Как переопределить их стандартную реализацию для конкретного класса?
- •22. Множественное наследование в python. Выбор вызываемого метода. Привести пример.
- •23. Как работают функции isinstance и issubclass? При решении каких задач они могут пригодиться.
- •24. Что такое иерархия исключений в python? Объяснить принцип ее построения. Как правильно перехватить любое исключение?
- •25. Что такое иерархия исключений в python? Объяснить принцип ее построения. Реализация собственных исключений в python.
- •26. У вас есть блок try/except, который перехватывает все исключения. Как правильно вывести трейсбек, но чтобы при этом программа продолжила функционировать?
- •27. Обработка множественных исключений в python и ее корректная реализация. Как функционирует блок else в таком случае?
- •28. Что такое менеджер контекста в python? Какие задачи он выполняет при работе с различными файлами? Можно ли дублировать его работу через try/except/finally?
- •29. Что такое итератор в python? Какие два метода позволяют реализовать протокол итерации для объекта класса и что они должны возвращать?
- •30. Что такое генератор в python? Какое главное преимущество? Реализуйте простейший генератор.
- •1. Дан список из n элементов строчного типа. Удалить все элементы, состоящие из пустых строк.
30. Что такое генератор в python? Какое главное преимущество? Реализуйте простейший генератор.
Генератор в питоне - функция с возможностью приостановить и продолжить работу, она возвращает итератор, по которому проходить пошагово и получить доступ к одному значению с каждой итерацией.
Главное преимущество заключается в инструкции yield, которая используется вместо return и уведомляет интерпретатор о том, что это генератор и возвращает итератор.
Пример генератора:
def fibonacci(xterms): # первые два условия x1 = 0 x2 = 1 count = 0
if xterms <= 0: print("Укажите целое число больше 0") elif xterms == 1: print("Последовательность Фибоначчи до", xterms, ":") print(x1) else: while count < xterms: xth = x1 + x2 x1 = x2 x2 = xth count += 1 yield xth
fib = fibonacci(5)
print(next(fib)) print(next(fib)) print(next(fib)) print(next(fib)) print(next(fib)) print(next(fib)) |
Задачи
Задачи идут не по порядку, условие может не совпадать слово в слово, но суть одинаковая.
1. Дан список из n элементов строчного типа. Удалить все элементы, состоящие из пустых строк.
Решение:
lst = list(filter(lambda s: s != "", lst))) |
Пояснение Функцией filter() мы фильтруем список условием, заданным лямбда-функцией, а именно оставляем все значения списка, кроме пустых строк. Функцией list() мы приводим полученный отфильтрованный кортеж к списку и записываем его в изначальную переменную. |
2. Дана строка. Если количество символов >10, то вывести первые 10 символов и троеточие. Иначе вывести строку.
Пример:
Добрый вечер! > Добрый веч...
Привет > Привет
Решение:
print(f"{str[:10]}..." if len(str) > 10 else str) |
Пояснение Конструкция f”{переменная}строка” позволяет нам форматировать строку и выводить переменные. Мы срезаем строку до 10 символа при условии, что длина строки больше 10. Иначе пишем строку. |
3. Дан массив из н элементов, удалить все элементы значения которых равны 20 или 22.
Решение:
lst = list(filter(lambda x: x != 22 or x != 22, lst)) |
Пояснение Функцией filter() мы оставляем значения списка, не равные 20 и 22, после чего полученный кортеж приводим к списку функцией list() |
4. Дан словарь, вывести только те пары, в которых ключ и значение одинаковые
Решение:
for i in dct: if i == dct[i]: print(i, dct[i]) |
Пояснение Циклом мы перебираем ключи словаря и если ключ и значение равны, то выводим их. |
5. Дан список, обработать его так, чтоб в нём остались только уникальные значения
Решение:
lst = list(set(lst)) |
Пояснение Функция set() приводит список к множеству, где могут содержаться только уникальные значения, и, как следствие, все неуникальные значения удаляются. Функцией list() мы приводим полученное множество обратно к списку |
6. Дано два словаря. Добавить пары ключ значение первому словарю из второго. Если ключи в словарях совпадают, то взять значения из второго.
Решение:
dct1.update(dct2) |
Пояснение Функция словаря update() объединяет два словаря, при том,если ключи совпадают, то значения берутся из второго словаря |
7. Дана строка. Найдите в ней все гласные буквы. Вывести их количество.
Решение:
print(len(list(filter(lambda x: x.lower() in "aeiou", s)))) |
Пояснение 1. Фильтруем строку функцией filter(), где задано условие лямбда-функцией 2. Приводим кортеж в список функцией list() 3. Находим длину списка функцией len() |
Остальных задач пока что нет, но как только они появятся, то сразу же будут добавлены. Если у вас есть эти задачи, то пишите в телеграм @edward_vishnevsky.
8. Нет информации
Решение:
|
Пояснение |
9. Нет информации
Решение:
|
Пояснение |
10. Нет информации
Решение:
|
Пояснение |
11. Нет информации
Решение:
|
Пояснение |
12. Нет информации
Решение:
|
Пояснение |
