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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
🧩 Что выведет код?
Anonymous Quiz
68%
3
6%
0
9%
5
17%
Error
👍4
Марк Лутц, «Изучаем Python», часть VI, глава 30:

Класс Number предоставляет метод для перехвата создания экземпляра (__init__), а также метод для отлавливания выражений вычитания (__sub__ ). Специальные методы подобного рода являются привязками, которые дают возможность соединяться со встроенными операциями:

class Number:
def __init__(self, start): # Для Number (start)
self.data = start
def __sub__(self, other) : # Для экземпляр - other
return Number(
self.data - other) # Результатом будет новый экземпляр

X = Number(5) # Number.__init__(X, 5)
Y = X - 2 # Number.__sub__ (X, 2)
Y.data # Y является новым экземпляром Number

Метод конструктора __init__ является наиболее употребительным методом перегрузки операций в Python; он присутствует в большинстве классов и применяется для инициализации вновь созданного объекта экземпляра с использованием любых аргументов, указываемых после имени класса. Метод __sub__ исполняет роль бинарной операции аналогично методу __add__, перехватывая выражения вычитания и возвращая в
качестве своего результата новый экземпляр класса (попутно выполняя __init__).
3
Официальная документация Python:

class slice(start, stop, step=None)
Возвращает объект среза, представляющий набор индексов, указанных в range(start, stop, step). Аргументы start и step по умолчанию равны None.
Юн Цуй - Рецепты Python, Глава 5:

С практической точки зрения любой тип данных, который может использоваться в цикле for, является итерируемым. Как формально проверить объект на итерируемость? Если объект может быть преобразован в итератор при помощи функции iter, он является итерируемым.

[В задаче выше] внешний цикл захватывает итератор из строки, вызывая iter, и каждый вложенный цикл делает то же самое, чтобы получить независимый итератор. Поскольку каждый активный итератор имеет собственную информацию о состоянии, каждый цикл может поддерживать свою позицию в строке независимо от любых других активных циклов.
👍1👎1
🧩 Что выведет код?
Anonymous Quiz
4%
1
16%
2
13%
3
66%
4
👍31
Документация Python:

setattr(object, name, value)
Аргументами являются объект, строка и произвольное значение. [...] Функция присваивает значение атрибуту, если объект это допускает. Например, setattr(x, 'age', 40) эквивалентно x.age = 40.
👍1👎1
🪤 Что выведет код?
Anonymous Quiz
25%
1
27%
2
34%
3
15%
Error
🤨1
Пасхавер Б. Pandas в действии, Часть II, глава 9:

Столбец product определяет группу, к которой принадлежит запись.

Объект GroupBy организует записи в DataFrame в группы на основе данных о продуктах A, B, C в некотором столбце. Предположим, что нас интересует доля одной СТРОКИ в общем объеме ГРУППЫ.
🤷‍♀2🤓1
🧩 Сколько элементов выведет nlargest()?
Anonymous Quiz
55%
1
13%
5
27%
10
5%
0
1👍1
Пасхавер Б. Pandas в действии, Часть I, глава 3:

Метод nlargest возвращает максимальные значения из объекта Series. Первый его параметр, n, задает число возвращаемых записей. Аргумент по умолчанию параметра n равен 5. Библиотека pandas cортирует значения в возвращаемом объекте Series в порядке убывания:

google.nlargest(n = 5)
google.nlargest()
👍1👎1
Какие метод перегрузки операций можно использовать для поддержки итерации в классах?
Anonymous Quiz
9%
__add__, __setitem__
16%
__next__, __del__
67%
__getitem__, __iter___
10%
Никакие из вышеперечисленных
👍2👎1
Марк Лутц, «Изучаем Python», часть VI, глава 30:

Классы могут поддерживать итерацию путем определения (или наследования) метода getitem или iter. Во всех итерационных контекстах Python сначала пытается применить метод iter, возвращающий объект, который поддерживает протокол итерации с помощью метода next: если поиск в иерархии наследования не привел к нахождению метода iter, тогда Python прибегает к методу индексирования__getitem__, многократно вызывая его с последовательно увеличивающимися индексами. В случае использования оператора yield метод next может быть создан автоматически.
👍4