Реализация функции convert, генерирующей последовательную строку чисел

Преобразуйте числа range(limit + 1) в строки и соедините через ''.join. При limit=12 получится '0123456789101112'; верхняя граница включается за счёт +1.

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

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

Преобразуйте числа 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 сам требуемый результат может не поместиться в память.

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

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

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

Подробнее