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
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)}
10%
[{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' только между словами, но не в начале или конце строки.
🌱 Что выведет код?
Anonymous Quiz
19%
None
10%
[4, 5, 1]
30%
[1, 4, 5]
41%
Error
В этом коде возникает TypeError потому что метод sort() в Python не может сравнивать числа разных типов — в данном случае целые числа (4, 5) и комплексное число 1j.

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

Или если бы вы хотели сортировать по модулю комплексных чисел:

y = [4, 5, 1j]
y.sort(key=abs) # Сортировка по модулю числа
🌱 Что выведет код?
Anonymous Quiz
13%
a
9%
None
49%
s
28%
Error
В коде используется метод count() для подсчёта вхождений подстроки "abb" в строку "abbzxyzxzxabb", но с определёнными начальным и конечным индексами.

1. "abb" - подстрока, которую мы ищем
2. -10 - начальный индекс (отсчёт с конца строки)
3. -1 - конечный индекс (отсчёт с конца строки)

Срез от -10 до -1 даёт нам "zxyzxzxab", и в нем нет вхождения "abb".

Если бы мы хотели посчитать вхождения в последних 10 символах:

print("abbzxyzxzxabb".count("abb", -10)) # 1
🌱 Что выведет код?
Anonymous Quiz
26%
1
44%
2
21%
3
10%
Error
В коде создаётся серия: [1, 2, 3, np.nan, 4, 5]

Метод cumsum() вычисляет накопительную сумму:

1: 1.0 (просто первое число)
2: 3.0 (1 + 2)
3: 6.0 (1 + 2 + 3)
4: NaN
5: 10.0 (1 + 2 + 3 + 4)
6: 15.0 (1 + 2 + 3 + 4 + 5)

Когда встречается np.nan (Not a Number), pandas пропускает его при подсчёте. Все числа преобразуются в тип float64, потому что np.nan является числом с плавающей точкой

Если бы мы хотели, чтобы np.nan не прерывал подсчёт, мы могли бы использовать параметр skipna=False:

print(numbers.cumsum(skipna=False))

Тогда результат был бы другим, и все значения после np.nan тоже стали бы NaN.