Синтаксис и типы данных: вопросы для собеседования (часть 7)
Базовые типы (int, float, str, bool), присваивание, f-строки, type hints — первое, что проверяют на собеседовании по Python. Спрашивают про мутабельность, разницу между is и ==, приведение типов. Без уверенного знания основ синтаксиса невозможно перейти к более сложным темам.
Вопросы 31–35 из 40
31Что вернёт вызов `int(" 42 ")`?
AБудет исключение `ValueError`, потому что есть пробелы
BВернётся число 42 типа `int`
CВернётся строка `"42"`
DВернётся число 42.0 типа `float`
Ответ: `int()` может преобразовывать строку с пробелами по краям.
Функция `int()` игнорирует ведущие и завершающие пробелы в строке, поэтому `int(" 42 ")` успешно вернёт целое число 42 типа `int`. Но строка вида `"42.0"` всё равно не подойдёт для `int()` без промежуточного `float()`.
32Пусть `data = [0, 1, 2]`. Что вернут `any(data)` и `all(data)`?
A`any()` вернёт `False`, а `all()` — `True`, потому что ноль отменяет оба
BФункция `any()` вернёт `True`, а `all()` вернёт `False` для этого списка
CОбе функции `any()` и `all()` вернут `True`, потому что список `data` не пуст
DОбе функции `any()` и `all()` вернут `False`, потому что `0` делает всё ложным
Ответ: `any()` вернёт `True`, если хотя бы один элемент истинный. `all()` — только если все элементы истинные.
Функция `any()` проверяет, есть ли хоть один истинный элемент. В списке `[0, 1, 2]` элементы `1` и `2` истинны, поэтому `any()` даёт `True`. Функция `all()` требует, чтобы все элементы были истинными, но `0` ложен, поэтому `all()` даёт `False`. Важно помнить, что `any([])` вернёт `False`, а `all([])` — `True`.
33Что произойдёт при выполнении кода `if (n := 10) > 5: print(n)`?
AУсловие не выполнится, потому что `:=` не создаёт переменную `n`
BБудет исключение `SyntaxError`, так как присваивание внутри `if` запрещено
CУсловие выполнится: `n` получит значение `10`, и `n > 5` будет `True`
DПеременная `n` получит значение `True` вместо `10` от результата сравнения
Ответ: Оператор `:=` присваивает значение переменной и одновременно возвращает его для использования в выражении.
Моржовый оператор `:=` (появился в Python 3.8) позволяет присвоить значение переменной прямо внутри выражения. В данном примере `n` получает значение `10`, затем это значение сравнивается с `5`. Условие `10 > 5` истинно, поэтому выполнится `print(n)`, который выведет `10`. Обычное `=` внутри `if` вызвало бы `SyntaxError`.
34Какой результат даст `round(2.5)`?
AЧисло `2`, потому что Python округляет к ближайшему чётному при `.5`
BЧисло `3`, потому что `.5` по стандартным математическим правилам округляется вверх
CЧисло `2.0` типа `float`, потому что `round()` сохраняет тип `float`
DБудет исключение `ValueError`, потому что `round()` не работает с `.5`
Ответ: Python использует банковское округление: при `.5` число округляется к ближайшему чётному.
В Python `round()` при равноудалённом значении (`.5`) округляет к ближайшему чётному числу. Поэтому `round(2.5)` даёт `2` (чётное), а `round(3.5)` даёт `4` (тоже чётное). Это банковское округление — оно уменьшает систематическую ошибку при многократном округлении. Математическое правило «всегда вверх» в Python не используется.
35Что произойдёт при выполнении `int("3.14")`?
AВернётся число 3
BБудет исключение `ValueError`
CВернётся число 3.14 типа `float`
DВернётся строка `"3.14"`
Ответ: `int()` не может преобразовать строку с десятичной точкой напрямую.
Функция `int()` умеет преобразовывать строки вида `"42"`, но строка `"3.14"` не является корректной записью целого числа. Поэтому `int("3.14")` вызовет исключение `ValueError`. Если нужно, используйте `float("3.14")`, а затем при необходимости `int(float("3.14"))` (помните, что `int()` отбрасывает дробную часть).
Хотите тренировать интерактивно?
В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать в Telegram