Как найти сумму цифр числа в Python?
Сумму цифр целого числа можно найти, например, использовав циклы for или while, генератор и встроенную функцию sum или же пользовательскую рекурсивную функцию. В любом случае один из подходов будет предполагать преобразование числа в строку для возможности осуществления итераций, т.к. числа в Python относятся к неитерируемым объектам, а значит получить доступ к отдельным цифрам числа напрямую не получится. Второй подход будет предполагать циклическое суммирование остатков от деления числа на десять. Начнем с циклов (см. пример №1).
# Берем целое число.
num = -2176
# Начальное значение суммы.
digit_sum = 0
# Приводим к строке и удаляем - или +.
num_str = str(num).lstrip('-+')
# Циклом проходимся по символам строки.
for digit in num_str:
# Преобразуем к числу и добавляем к сумме.
digit_sum += int(digit)
# Выводим результат на экран.
print(digit_sum)
# Обнуляем сумму.
digit_sum = 0
# Счетчику присваиваем кол-во цифр числа.
k = len(num_str)
# При к == 0 цикл прервется.
while k:
# Преобразуем к числу и добавляем к сумме.
digit_sum += int(num_str[-k])
# Уменьшаем счетчик на единицу.
k -= 1
# Выводим результат на экран.
print(digit_sum)
# Обнуляем сумму и пробуем циклическое
# суммирование остатков от деления на 10.
digit_sum = 0
# Возьмем модуль числа.
num = abs(num)
# При num == 0 цикл прервется.
while num > 0:
# Добавляем к сумме последнюю цифру.
digit_sum += num%10
# Отсеиваем последнюю цифру числа.
num //= 10
# Выводим результат на экран.
print(digit_sum)
16
16
16
Пример №1. Нахождение суммы цифр числа с помощью циклов for и while.
Теперь используем генератор выражения и встроенную функцию суммирования (см. пример №2).
# Берем целое число.
num = -2176
# Начальное значение суммы.
digit_sum = 0
# Приводим к строке и удаляем - или +.
num_str = str(num).lstrip('-+')
# Суммируем элементы генератора выражения.
digit_sum = sum((int(d) for d in num_str))
# Выводим результат на экран.
print(digit_sum)
16
Пример №2. Нахождение суммы цифр числа с помощью генератора выражения.
Того же результата можно добиться и с помощью рекурсивной функции. Онако мы покажем один из более простых вариантов нахождения суммы цифр натурального числа (см. пример №3).
# Рек-вная ф-ция для вычисления суммы цифр нат. числа.
def sum_digits(n):
# Базовый случай для числа меньше 10.
if n < 10:
# Просто возвращаем само число.
return n
# Рекурсивный случай для чисел больше 10.
else:
# Возвращаем последнюю цифру числа (остаток от
# деления на 10) плюс сумму цифр оставшейся
# части (частное от деления числа на 10).
return n%10 + sum_digits(n//10)
# Выводим суммы цифр заданных чисел на экран.
mes = 'Сумма цифр числа {} равна {}.'
print(mes.format(7, sum_digits(7)))
print(mes.format(39574, sum_digits(39574)))
Сумма цифр числа 7 равна 7.
Сумма цифр числа 39574 равна 28.
Пример №3. Нахождение суммы цифр числа с помощью рекурсивной функции.
Подробнее о числах в Пайтон можно почитать в параграфе «Числа в Python» нашего учебника.