Что лишнее в sum_digits для неотрицательного числа

При таком контракте обработка знака и дробной части не нужна. Можно суммировать остатки от деления на 10, уменьшая число целочисленным делением.

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

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

При таком контракте обработка знака и дробной части не нужна. Можно суммировать остатки от деления на 10, уменьшая число целочисленным делением.

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

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

Условие

По контракту sum_digits принимает неотрицательное целое. В реализации есть преобразование в строку, обработка минуса и дробной части. Как упростить функцию и сохранить случай нуля?

Ответ

При таком контракте обработка знака и дробной части не нужна. Можно суммировать остатки от деления на 10, уменьшая число целочисленным делением.

Пример Python:

def sum_digits(n):
    total = 0
    while n:
        total += n % 10
        n //= 10
    return total

Для 0 результат равен 0. Если вход приходит из внешнего API, валидируйте контракт на границе; удаление недостижимых веток не означает отказ от проверки непроверенных данных.

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

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

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

Подробнее