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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Объяснение:

Здесь используется метод создания словаря с помощью литерала

При этом есть одно важное правило для словарей — ключом может выступать лишь неизменяемый тип данных. А потому здесь лишь один правильный ответ — dictOne
Каким будет результат выполнения кода выше?
Anonymous Quiz
25%
Syntax Error
11%
5 .__mul__
49%
30
14%
Ничего из вышеперечисленного
Объяснение:

Целые числа имеют магические методы, которые можно вызвать, например, метод умножения __mul__. В данном примере, multipliers["microbit"](6) эквивалентно умножению 5 на 6, потому что значением ключа "microbit" является 5.

Однако надо учитывать, что если написать число непосредственно перед точкой, Python интерпретирует это как число с плавающей точкой. Поэтому необходимо использовать пробел перед вызовом метода.

Дополнительно можете глянуть этот видос, где автор продемонстрировал работу таких магических методов, как — add, sub, mul, truediv
Каким будет результат выполнения кода выше?
Anonymous Quiz
51%
[21, 49, 15]
22%
[0, 49, 88]
13%
[49]
15%
Error
Объяснение:

Код выглядит запутанным из-за того, что изменяется список array, который использует генератор.

Ключ к пониманию этого кода:
— Цикл for использует первоначальный список array = [21, 49, 15].
— Условие if использует новый список array = [0, 49, 88].

Причина такого поведения заключается в поздней привязке (late binding) условного выражения. Это означает, что условие внутри генератора оценивается в момент обращения к элементу генератора, а не в момент его создания.

Если немного модифицировать код, можно увидеть, что происходит:
array = [21, 49, 15]
gen = ((x, print(x, array)) for x in array)
array = [0, 49, 88]

При выполнении этого кода вывод будет следующим:
21 [0, 49, 88]
49 [0, 49, 88]
15 [0, 49, 88]

Этот вывод показывает, что цикл for итерирует по исходному списку [21, 49, 15], в то время как условие if проверяет элементы уже нового списка [0, 49, 88]. Единственным числом, которое присутствует в обоих списках, является 49, поэтому условие array.count(x) > 0 истинно лишь для этого числа, и итоговый результат будет [49].
Какой из следующих операторов имеет наименьший приоритет?
Anonymous Quiz
9%
**
39%
+
23%
in
29%
and
Объяснение:

Всё так, and имеет наименьший приоритет среди всех перечисленных в задании операторов
Объяснение:

Функция в текущем виде не является корректной Для того чтобы функция не вызывала ошибок, можно сделать одно из следующих действий:

Добавить docstring:

def function():
"""Это функция"""


Добавить любую инструкцию, например, print:

def function():
print

Добавить pass:

def function():
pass

Использовать многоточие (...) для указания на незавершённую функцию:

def function():
...


Все эти варианты являются корректными способами создания пустой функции в Python, которая не вызовет ошибок.
Какой модуль Python поддерживает регулярные выражения?
Anonymous Quiz
79%
re
13%
regex
4%
pyregex
3%
ничего из вышеперечисленного
Объяснение:

Модуль re предоставляет операции сопоставления шаблонов регулярных выражений, аналогичные тем, которые встречаются в языке Perl. re является частью стандартной библиотеки и ее можно импортировать с помощью: import re.
Каким будет результат выполнения кода выше?
Anonymous Quiz
22%
SyntaxError
9%
TypeError
12%
[1, 2, 3]
57%
[1, 2, 3, 1, 2, 3]
Объяснение:

Оператор walrus или как его ещё называют моржовый оператор (:=), позволяет присвоить значение переменной внутри выражения. В данном случае, выражение внутри скобок присваивает список [1, 2, 3] переменной x.

Метод extend добавляет все элементы из переданного списка в конец исходного списка. Таким образом, исходный список [1, 2, 3] удваивается, и получается [1, 2, 3, 1, 2, 3]

Важно:
Синтаксис (x := [1, 2, 3]).extend(x) является допустимым, но не рекомендуемым согласно PEP 572 – Assignment Expressions, так как он может быть неинтуитивным и сложным для понимания.

В комментариях можете поделиться своими вариантами написания данного кода, чтобы он был более понятным
Каким будет результат выполнения кода выше?
Anonymous Quiz
7%
0
6%
2
80%
8
7%
9
Объяснение:

Здесь мы создаём список из чётных чисел от 0 до 8 при помощи генератора списка и условия if i % 2 == 0

Затем извлекается последний элемент из данного списка и его значение присваивается переменной res. Т.к. последний элемент списка — число 8, то и результатом выполнения этого кода будет число 8