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

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

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

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

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

Ещё один интересный пример касательно переменных. Эта код демонстрирует так называемое "затенение" встроенной функции 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
Объяснение:

При написании нулей подряд ведущие нули в Python игнорируются, поэтому в нашем случае он просто выпадает. Но если после ведущих нулей идут другие цифры, например — 01, 02, 01010101, то Python  и вовсе выдаёт ошибку SyntaxError. 

Однако есть ситуации, когда нам просто необходимо, чтобы они отображались. Например, при работе с датами и временем, номерами страниц и так далее.

Один из наиболее простых способов решить эту проблему — использование функции str.zfill(). Эта функция позволяет добавить ведущие нули к строке. Она принимает один аргумент — количество символов, которые должна содержать строка. Если исходная строка короче, то она заполняется ведущими нулями. Пример её использования на картинке!
Каким будет результат выполнения кода выше?
Anonymous Quiz
34%
H e l l o
25%
H e l o
6%
None
35%
Error
Объяснение:

В данном случае varмножество (set), а множество не умеет выдавать значения по индексу, т.к. элементы в нём хранятся неупорядоченно

Отсюда и ошибка
Каким будет результат выполнения кода выше?
Anonymous Quiz
66%
<class 'str'>
14%
<class 'float'>
2%
<class 'int'>
17%
<class 'tuple'>
Объяснение:

Когда мы присвоили переменной data строку '20.0' в конце поставили запятую, а это значит, что мы создали кортеж с одним элементом. Поэтому и получается <class 'tuple'>