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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Каким будет результат выполнения кода?
Anonymous Quiz
31%
Python 3.11
41%
lang ver
21%
(’lang’, ‘Python’) (‘ver’, 3.11)
6%
Error
Объяснение:

**kwargs собирает все переданные ему аргументы в новый словарь. В нём имена аргументов являются ключами, а их значения — значениями ключей

По итогу когда мы проходимся по kwargs с помощью for, то мы по очереди выцепляем именно что ключи, т.е. lang и ver
Что из перечисленного ниже является недопустимым именем переменной в Python?
Anonymous Quiz
59%
yield
28%
true
7%
C31
6%
a_b_
Объяснение:

yield это ключевое слово, оно не может использоваться в качестве имени переменной, поэтому этот вариант является некорректным именем переменной.

Использование булевых значений также не допустимо, однако true в нашем случае начинается с нижнего регистра, следовательно, не является булевым значением. А остальные варианты также допустимы.
Каким будет результат выполнения кода выше?
Anonymous Quiz
37%
0
28%
TypeError
28%
SyntaxError
7%
RuntimeError
Объяснение:

Ещё один интересный пример касательно переменных. Эта код демонстрирует так называемое "затенение" встроенной функции min(). Мы создаём переменную min со значением 0, которая в результате "затеняет" встроенную функцию min(). При попытке вызвать min() возникает ошибка TypeError, так как вызывается целочисленный объект, а не функция.

Затенение встроенных функций создает проблемы, особенно в больших блоках кода, когда сложно отследить, где именно происходит затенение. Следует избегать использования имен встроенных функций в качестве переменных.
Каким будет результат выполнения кода?
Anonymous Quiz
10%
0
11%
13
44%
4
36%
-1
Объяснение:

Это задачка на внимательность. В ветке else мы не отнимаем единичку у a, а присваиваем ей значение -1

Поэтому по итогу она и остаётся равной -1
Каким будет результат выполнения кода?
Anonymous Quiz
9%
choco bar
5%
bar bar
2%
choco choco
84%
bar choco
Объяснение:

Тут всё довольно просто. Мы просто меняем значение переменной c на значение переменной d и значение переменной d на c. Как результат получаем — bar choco
Какой из следующих вариантов при печати выдаст ошибку?
Anonymous Quiz
8%
[1, ['Hello'], 1]
52%
{6, [2, 3], 5}
27%
{1: 10, 2: 20, 1: 30}
13%
{10, 20, 10}
Объяснение:

Существует ограничение, что элементами множества (как и ключами словарей) в Python могут быть только так называемые хешируемые (Hashable) объекты. Это обусловлено тем фактом, что внутренняя реализация set основана на хеш-таблицах. Например, списки и словари – это изменяемые объекты, которые не могут быть элементами множеств. Так и получается, что {6, [2, 3], 5} выдаст ошибку
Каким будет результат выполнения кода?
Anonymous Quiz
32%
[1, 2, 3, 4, 5, 6, 7, 8]
8%
[1, 2, 3, 4, 5, 6, 7]
41%
None
19%
[8]
Объяснение:

Что здесь происходит? Разве метод append() не добавляет элемент в конец списка?

Да, метод append() действительно добавляет элемент в конец списка, но при этом сам метод возвращает значение None. А присваивание результата append() обратно переменной со списком приводит к тому, что вместо исходного списка мы получаем None.

Чтобы наш код корректо отработал его небходимо немного изменить:
my_list = list(range(1, 7)) 
my_list.append(8)
print(my_list)
Каким будет результат выполнения кода?
Anonymous Quiz
20%
['00']
40%
['0']
23%
['0', '0']
18%
Error