Какие из индексов results будут содержать True после выполнения следующего кода?

Все три элемента results будут True. Аннотация i: int не преобразует значение: выражение 1e+111 + 111 создаёт float, а столь малая добавка теряется при округлении.

Короткий ответ

Что ответить на собеседовании

Все три элемента results будут True. Аннотация i: int не преобразует значение: выражение 1e+111 + 111 создаёт float, а столь малая добавка теряется при округлении.

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

Ответ с пояснениями

Условие

Какие из индексов results будут содержать True после выполнения следующего кода?

i: int = 1e+111 + 111 results = [False, False, False] results[0] = i == 1e+111 + 111 results[1] = i == float(i) results[2] = i == int(float(i))

Ответ

Все три элемента results будут True. Аннотация i: int не преобразует значение: выражение 1e+111 + 111 создаёт float, а столь малая добавка теряется при округлении.

Первое сравнение повторяет то же вычисление. Второе сравнивает float с его преобразованием в float, не меняющим значение. Третье тоже истинно: конечный float такой величины представляет целое число, хотя обычно не точное математическое 10**111. int(float(i)) возвращает именно это представленное целое, и Python корректно сравнивает int с float.

[True, True, True]

Ошибка рассуждения — считать аннотацию присваиванием настоящего int или ожидать, что прибавление 111 обязательно изменит огромный float.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее