Синтаксис и типы данных: вопросы для собеседования (часть 7)

Базовые типы (int, float, str, bool), присваивание, f-строки, type hints — первое, что проверяют на собеседовании по Python. Спрашивают про мутабельность, разницу между is и ==, приведение типов. Без уверенного знания основ синтаксиса невозможно перейти к более сложным темам.

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrame

Вопросы 3135 из 40

31Что вернёт вызов `int(" 42 ")`?
AЦелое число `42` после игнорирования ведущих и завершающих пробелов в строке
BОшибка `ValueError` при отказе функции разбирать строку с пробелами по краям
CСтрока `"42"`: функция обрезает пробелы по краям, но тип значения остаётся строковым
DВещественное число `42.0`: для строк с пробелами функция приводит результат к `float`
Ответ: Функция `int()` принимает строку с пробелами по краям и возвращает целое число.

Функция `int()` игнорирует ведущие и завершающие пробелы в строке, поэтому `int(" 42 ")` успешно вернёт целое число 42 типа `int`. Исключение `ValueError` возникает только если внутри строки есть нечисловые символы или дробная часть, например `int("42.0")` или `int("4 2")`. Тип результата — всегда `int`, а не `float` и не строка.

Подробный разбор →
32Пусть `data = [0, 1, 2]`. Что вернут вызовы `any(data)` и `all(data)` соответственно?
A`any(data)` вернёт `False`, а `all(data)` вернёт `True`
B`any(data)` вернёт `True`, а `all(data)` вернёт `False`
CОбе функции `any(data)` и `all(data)` вернут `True`
DОбе функции `any(data)` и `all(data)` вернут `False`
Ответ: `any()` возвращает `True` при хотя бы одном истинном элементе; `all()` — только когда истинны все элементы.

Функция `any()` возвращает `True`, если хотя бы один элемент истинный: в списке `[0, 1, 2]` истинны `1` и `2`, поэтому `any(data)` равно `True`. Функция `all()` требует, чтобы истинными были все элементы, но `0` ложен, поэтому `all(data)` равно `False`. Полезно помнить два пограничных случая: `any([])` возвращает `False`, а `all([])` — `True`. Эти соглашения иногда приводят к неожиданному поведению на пустых выборках.

Подробный разбор →
33Что произойдёт при выполнении кода `if (n := 10) > 5: print(n)`?
AУсловие не выполнится: `:=` не создаёт переменную `n` внутри выражения `if (n := 10)`
BУсловие выполнится: `n` получит `10`, сравнение `n > 5` даст `True`, выведется `10`
CБудет исключение `SyntaxError`: присваивание `:=` внутри блока `if` запрещено в Python
DПеременная `n` получит значение `True` от результата сравнения `(n := 10) > 5`
Ответ: Оператор `:=` присваивает значение переменной и одновременно возвращает его для использования в выражении.

Моржовый оператор `:=` (появился в Python 3.8) позволяет присвоить значение переменной прямо внутри выражения. В данном примере `n` получает значение `10`, затем это значение сравнивается с `5`. Условие `10 > 5` истинно, поэтому выполнится `print(n)`, который выведет `10`. Обычное `=` внутри `if` вызвало бы `SyntaxError`.

Подробный разбор →
34Какой результат даст вызов `round(2.5)` в современном Python 3?
AЦелое число `2`, потому что Python округляет дробное `.5` к ближайшему чётному числу
BЦелое число `3`, потому что дробное `.5` по школьному правилу всегда округляется вверх
CДробное число `2.0` типа `float`, потому что `round()` всегда сохраняет исходный тип `float`
DПроизойдёт исключение `ValueError`, потому что функция `round()` не работает с дробным `.5`
Ответ: Python использует банковское округление: при `.5` число округляется к ближайшему чётному.

В Python 3 `round()` при равноудалённом значении (`.5`) округляет к ближайшему чётному числу. Поэтому `round(2.5)` даёт `2` (чётное), а `round(3.5)` даёт `4` (тоже чётное). Это банковское округление — оно уменьшает систематическую ошибку при многократном округлении. Школьное правило «всегда вверх» в Python 3 не используется, и тип результата при вызове `round(x)` без второго аргумента — `int`, а не `float`.

Подробный разбор →
35Что произойдёт при выполнении вызова `int("3.14")` в `Python`?
AВернётся число `3` типа `int` (дробь отбрасывается)
BВернётся число `3.14` типа `float` без изменений
CВернётся строка `"3"` после усечения дробной части
DБудет выброшено исключение `ValueError`
Ответ: Функция `int()` не умеет преобразовывать строку с десятичной точкой напрямую и в этом случае поднимает `ValueError`.

Функция `int()` умеет преобразовывать строки вида `"42"`, но `"3.14"` не является корректной записью целого числа. Поэтому вызов `int("3.14")` поднимает `ValueError`. Если нужно усечь дробную часть, сначала переводят в `float`, а потом в `int`: `int(float("3.14"))` вернёт `3`, потому что `int()` от числа отбрасывает дробную часть.

Подробный разбор →
12345678

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать Python в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrame