Python: задачки и вопросы
7.81K subscribers
1.18K photos
1 video
1 file
87 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
加入频道
🪤 Что выведет код?
Anonymous Quiz
72%
1
13%
2
8%
3
8%
Error
👍4👎1
Марк Лутц, «Изучаем Python», часть VI, глава 30:

«Перегрузка операций должна представляться, когда класс естественным образом согласуется с интерфейсами встроенного типа или должен их эмулировать. Коллекции могут имитировать интерфейсы последовательностей или отображений, а вызываемые объекты могут быть реализованы для использования с API-интерфейсом, который ожидает функцию. Однако в целом вы не должны реализовывать операции выражений, если они естественно и логически не подходят для ваших объектов — взамен применяйте нормально именованные методы».

— Point - логичная перегрузка + (сложение координат точек)
— Person - нелогичная перегрузка + (сложение людей не имеет математического смысла), но код работает и возвращает строку.

Этот пример демонстрирует принцип: перегружайте операции, только когда это логично и естественно для ваших объектов.
👍4👎1
Вопрос: Что объединяет async-архитектуры, продакшн ML, костыль, который стал фреймворком и код, за который не стыдно?
Ответ: всё это — темы докладов на PyCon Russia 2025.


Самая крупная Python-конференция в стране — уже через неделю!

25–26 июля, Москва

• 2 насыщенных трека — Python и Data
• 3 воркшопа
• Афтепати после первого дня

Хочешь встретиться с теми, кто пишет, дебажит, рефакторит и любит Python, вживую? Это твой шанс.
Вся программа и билеты на сайте, а общение в чате PyCon. (и да, обещают, на входе не будет вопросов по PEP8)

Это #партнёрский пост
👍1👾1
🧩 Что выведет код?
Anonymous Quiz
20%
1
18%
2
56%
3
7%
Error
👍2👎1
Хеллман Д. Стандартная библиотека Python 3, глава 1:

«Отсутствие в словаре значения для переменной missing приводит к тому, что метод substitute() возбуждает исключение KeyError. В то же время метод safe substitute() вместо возбуждения исключения перехватывает его и оставляет в тексте само выражение переменной».

«Ключевым отличием шаблонов от строковых подстановок (интерполяции) и форматирования с помощью метода format() является то, что они не учитывают тип аргументов. Значения преобразуются в строки, а строки вставляются в результат. Опции форматирования полностью отсутствуют. Например, не существует способа управлять количеством цифр, используемых для представления значений с плавающей запятой.

Однако шаблоны обладают тем неоспоримым преимуществом, что использование их метода safe_substitute() позволяет избежать возникновения исключений в тех случаях, когда не все значения, в которых нуждаются шаблоны, представлены
аргументами».
👍1👎1
Хеллман Д. Стандартная библиотека Python 3, глава 1:

«Значением атрибута t.pattern является скомпилированное регулярное выражение, но исходная строка доступна через его атрибут pattern:

\$(?:
(?P<escaped>\$) | # Escape sequence of two delimiters
(?P<named>(?a:[_a-z][_a-z0-9]*)) | # delimiter and a Python identifier
{(?P<braced>(?a:[_a-z][_a-z0-9]*))} | # delimiter and a braced identifier
(?P<invalid>) # Other ill-formed delimiter exprs


Это сложное регулярное выражение с именованными группами, которое обрабатывает различные варианты синтаксиса переменных в шаблонах Python.
🗿3
🧩 Что выведет код?
Anonymous Quiz
26%
1
17%
2
53%
3
4%
Error
🤨2
Документация pandas:

«pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)


Изменяет представление данных с «широкого» на «длинный», при необходимости оставив заданные идентификаторы
.

То есть у каждого из трех id появится по три строки (по одной на каждую метрику — height, weight, age).
🤯1
🧩 Что выведет код?
Anonymous Quiz
35%
1
22%
2
35%
3
8%
Error
👍1👎1
Из документации Pandas:

DataFrame.dropna(*, axis=0, how=<no_default>, thresh=<no_default>, ...)

Удаляет записи с пропущенными значениями. ...

Параметры:
...
thresh : int, optional

Порог отсечки по пустоте столбца.


В задаче выше удаляться все столбцы, чья заполненность ниже 80%.
👍21
🧩 Как узнать длину словаря?
Anonymous Quiz
7%
my_dict.length()
3%
count(my_dict)
79%
len(my_dict)
11%
my_dict.size()
👍2
len(s)
Возвращает длину (количество элементов) объекта. Аргумент может быть последовательностью (например, строкой, байтами, кортежем, списком или диапазоном) или коллекцией (например, словарём, набором или фиксированным набором).
👍1👎1
🧩 Какой объект не является базовым типом данных?
Anonymous Quiz
7%
set
27%
complex
38%
nan
28%
Все являются
👍1😱1
w3schools.com: Встроенные типы данных

Выделяют 8 групп, в которых 15 видов данных.
👍1👎1
Марк Лутц, "Изучаем Python", том 2, Глава 31:

«... Допускается вызывать метод без экземпляра при условии, что метод его не ожидает, и метод вызывается только через класс и никогда через экземпляр. То есть Python будет передавать экземпляр методам только для вызовов через экземпляр. При вызове через класс передавать экземпляр вручную понадобится только в случае, если метод его ожидает:

class Selfless:
def __init__(self, data):
self.data = data
def selfless(arg1, arg2): # Простая функция
return arg1 + arg2
def normal(self, arg1, arg2): # При вызове ожидается экземпляр
return
self.data + arg1 + arg2

X = Selfless(2)
X.normal(3, 4) # Экземпляр передается self автоматически: 2+(3+4)

print(Selfless.normal(X, 3, 4)) # Метод ожидает self: передать вручную
print(Selfless.selfless(3, 4)) # Без передачи экземпляра

Последний тест работает из-за того, что такие методы трактуются как простые функции, не нуждающиеся в экземпляре. Несмотря на то что в Python З.Х перестают отлавливаться некоторые потенциальные ошибки (что, если программист забыл передать экземпляр?), появляется возможность использовать методы класса как простые функции до тех пор, пока им не передается аргумент экземпляра self и они не рассчитывают на него.
👍1👎1