Преобразуйте числа range(limit + 1) в строки и соедините через ''.join. При limit=12 получится '0123456789101112'; верхняя граница включается за счёт +1.
Реализация функции convert, генерирующей последовательную строку чисел
Преобразуйте числа range(limit + 1) в строки и соедините через ''.join. При limit=12 получится '0123456789101112'; верхняя граница включается за счёт +1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Напишите функцию convert(), которая получает целое число limit и возвращает одну строку, содержащую подряд записанные все числа от 0 до limit включительно без каких‑либо разделителей. Пример результата для limit = 12: "0123456789101112".
Ответ
Преобразуйте числа range(limit + 1) в строки и соедините через ''.join. При limit=12 получится '0123456789101112'; верхняя граница включается за счёт +1.
Реализация для неотрицательного целого:
def convert(limit):
if type(limit) is not int or limit < 0:
raise ValueError('Expected non-negative integer')
return ''.join(str(number) for number in range(limit + 1))
convert(0) возвращает '0', не пустую строку. join предпочтительнее многократного наращивания длинной строки в цикле. Время и память зависят от суммарного числа цифр результата; для огромного limit сам требуемый результат может не поместиться в память.