How to Find Sum of Digits of a Number in Python

Python's built-in support for lists, strings and data conversion enables us to write very concise code which usually takes much more code in other languages. For example, the following python 3 code computes sum of digits of a number using a generator expression and an implicit iterator.

# python3 code
number = int(input("Please enter a number:"))
sum_of_digits = sum(int(digit) for digit in str(number))
print("Sum of digits of {} is {}".format(number,sum_of_digits))

The above program illustrates a number of cool features of python language,

  • Convert a number to a string using the built-in str() function
  • Implicitly convert a string to a sequence of characters to a list when used in looping context
  • Use int() built-in function to convert each digit character to a number
  • The use of generator expression which return sequence items on demand
  • The sum() aggregate built-in function which finally computes the sum of digits

Following is a more traditional way of computing sum of digits of a number in python. Note the use of divmod() function which can compute the remainder and modulus in a single call. The resultant tuple is unpacked into 2 variables.

# python3 code
number = int(input("Please enter a number:"))

sum_of_digits = 0
n = number
while n:
    n,remainder = divmod(n,10)
    sum_of_digits += remainder

print("Sum of digits of {} is {}".format(number,sum_of_digits))