Вычисление суммы цифр числа - распространенная задача в программировании. В Python существует несколько способов решения этой проблемы, которые различаются по эффективности и читаемости кода.

Содержание

Основные методы вычисления суммы цифр

МетодОписание
Использование цикла whileКлассический итерационный подход
Преобразование в строкуБолее питонический способ
РекурсияЭлегантное функциональное решение

Решение с использованием цикла while

Пример кода

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

Как это работает

  1. Инициализируем переменную total для хранения суммы
  2. Пока число n больше 0:
    • Добавляем последнюю цифру (n % 10) к total
    • Удаляем последнюю цифру (n = n // 10)
  3. Возвращаем полученную сумму

Решение с преобразованием в строку

Пример кода

def sum_digits_str(n): return sum(int(d) for d in str(abs(n)))

Преимущества

  • Короткий и читаемый код
  • Работает с отрицательными числами
  • Не требует сложных математических операций

Сравнение производительности методов

МетодВремя выполнения (10000 итераций)
Цикл while0.0021 сек
Преобразование в строку0.0038 сек
Рекурсия0.0045 сек

Рекурсивное решение

def sum_digits_recursive(n): n = abs(n) if n < 10: return n return n % 10 + sum_digits_recursive(n // 10)

Особенности рекурсии

  • Более элегантный код
  • Может вызвать переполнение стека для очень больших чисел
  • Менее эффективен по памяти

Дополнительные возможности

Обработка отрицательных чисел

Все представленные методы можно модифицировать для работы с отрицательными числами, используя функцию abs().

Однострочное решение

sum_digits = lambda n: sum(int(d) for d in str(abs(n)))

Вычисление суммы цифр числа - отличная задача для понимания основных концепций Python, включая работу с числами, строками, циклами и рекурсией.

Другие статьи

Игра в буквы как в Тинькофф и прочее