okpython.net
Все для начинающих

Как найти сумму цифр числа в Python?

Сумму цифр целого числа можно найти, например, использовав циклы for или while, генератор и встроенную функцию sum или же пользовательскую рекурсивную функцию. В любом случае один из подходов будет предполагать преобразование числа в строку для возможности осуществления итераций, т.к. числа в Python относятся к неитерируемым объектам, а значит получить доступ к отдельным цифрам числа напрямую не получится. Второй подход будет предполагать циклическое суммирование остатков от деления числа на десять. Начнем с циклов (см. пример №1).

Код Результат pythonCodes
# Берем целое число.
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).

Код Результат pythonCodes
# Берем целое число.
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).

Код Результат pythonCodes
# Рек-вная ф-ция для вычисления суммы цифр нат. числа.
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» нашего учебника.