Будет выведено True True True True с пробелом после каждого значения. range(3, 0, -1) содержит 3, 2 и 1, все они истинны, а range можно обходить повторно.
Повторный обход 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 — уже по другой причине.