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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
🌱 Что выведет код?
Anonymous Quiz
44%
1
44%
2
8%
3
4%
Error
Python интернирует (переиспользует) строковые литералы, особенно короткие. Поэтому a is b возвращает True, так как обе переменные указывают на один и тот же объект в памяти. А вот c создаётся в рантайме с помощью join(), и хоть его значение такое же, объект в памяти другой, поэтому a is c возвращает False.
🔍 🌱 Что выведет код?
Anonymous Quiz
26%
Yes
67%
No
4%
True
4%
Error
Метод __bool__ управляет логическим значением объекта. В данном случае он всегда возвращает False, и условие if a: не выполняется, поэтому печатается No.
🔍 🌱 Что выведет код?
Anonymous Quiz
5%
1
17%
2
73%
3
5%
Error
@contextmanager преобразует генератор в менеджер контекста. Всё до yield выполняется при входе в with, всё после yield — при выходе. Поэтому:

- Enter → на входе
- Inside → внутри блока with
- Exit → после выхода из блока
🔍 🌱 Что выведет код?
Anonymous Quiz
51%
10
21%
None
12%
NameError
16%
UnboundLocalError
В коде есть глобальная переменная x = 10. В функции func() есть операция del x. Когда Python видит операцию del x внутри функции, он считает x локальной переменной этой функции. Но при этом, когда выполняется print(x), Python пытается использовать локальную переменную x, которая еще не была инициализирована (так как del x выполняется после).
🔍 🌱 Что выведет код?
Anonymous Quiz
61%
{(1, 2, 3)}
9%
[{1, 2, 3}]
15%
{[1, 2, 3]}
14%
Error
Списки изменяемы и не могут быть элементами множества, но кортежи — неизменяемы и хэшируемы, поэтому кортеж из списка успешно добавится во множество.
1. У вас есть список a = ['hat', 'mat', 'rat']
2. Когда вы вызываете 'rhyme'.join(a), Python:
- Берет первый элемент 'hat'
- Добавляет РАЗДЕЛИТЕЛЬ 'rhyme'
- Берет второй элемент 'mat'
- Добавляет разделитель 'rhyme'
- Берет третий элемент 'rat'

Таким образом, получается:
- 'hat' + 'rhyme' + 'mat' + 'rhyme' + 'rat' = 'hatrhymematrhymerat'

Разделитель добавляется ТОЛЬКО между элементами списка, но не в начале и не в конце. Поэтому в результате мы видим 'rhyme' только между словами, но не в начале или конце строки.