Повторный обход range и истинность ненулевых элементов

Будет выведено True True True True с пробелом после каждого значения. range(3, 0, -1) содержит 3, 2 и 1, все они истинны, а range можно обходить повторно.

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

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

Будет выведено True True True True с пробелом после каждого значения. range(3, 0, -1) содержит 3, 2 и 1, все они истинны, а range можно обходить повторно.

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

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

Условие

Что будет выведено в терминал в результате выполнения следующего кода?

r = range(3,0,-1) for i in range(0,4): print(all(r), end = ' ')

Ответ

Будет выведено True True True True с пробелом после каждого значения. range(3, 0, -1) содержит 3, 2 и 1, все они истинны, а range можно обходить повторно.

all(r) каждый раз создаёт новый итератор по range и проверяет его элементы. Число 0 не входит в диапазон: правая граница исключена. Внешний range(0,4) даёт четыре итерации, а end=' ' заменяет перевод строки пробелом. Если бы r был одноразовым итератором, первый вызов исчерпал бы его, но all пустого итератора всё равно вернул бы True — уже по другой причине.

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

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

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

Подробнее