Python Program to find sum of digits
In this tutorial, we will learn how to calculate the sum of all the digits of a given number. We will learn all the possible methods to do this program. We will be using recursive functions, loops, and type conversion for this program in Python.
In type conversion, we will convert integer to string for getting each digit of the number. Before moving forward you must know what is a string. Check out this article to know about String in Python.
The program should take an integer number as an input from the user and print the sum of its digits. For example,
Input- 4321
Output- 10
Input- 821
Output- 11
Here are three approaches, you can use to print the sum of digits.
- Using str() and int()
- Using iteration
- Using recursion
Python Program 1: Using str() and int() method
Before starting with the program, let's first know about str() and int() methods. They are built-in functions in the Python Library.
The str() method converts and returns the object to string and the int() method converts the object to an integer.
Algorithm
Step 1- Take input from the user
Step 2- Declare a variable for storing the sum
Step 3- Convert number to string
Step 4- Run loop for each digit of a number
Step 5- Convert digit to integer and add it to sum
Step 6- Print the sum.
Python Program
Look at the program to understand the implementation of the above-mentioned approach.
n=int(input("Enter number"))
sum=0
for digit in str(n):
sum=sum+int(digit)
print("Sum of digits",sum)
Enter number23451
Sum of digits 15
Python Program 2: Using iteration
In this program, we will use looping statements for calculating the sum. Loops are used to execute a particular piece of code repeatedly. For loop, while, and do-while is some looping statements.
For getting the rightmost digit of a number divide it by 10 till the number becomes 0. The remainder at last will be the rightmost digit. To get the reminder to use the remainder operator "%". For getting all the digits of a number divide the quotient obtained by 10. To get an integer quotient every time use "//".
Algorithm
Step 1- Define a function Sum with parameter n
Step 2- Declare variable sum to store the sum of digits
Step 3- Define a loop that will run till n is not 0
Step 4- Add the sum variable to the remainder returned by (n%10)
Step 5- Update n to n//10
Step 6- Take user input
Step 7- Call function Sum and pass input as a parameter
Step 8- Print the value returned by Sum.
Python Program
Look at the program to understand the implementation of the above-mentioned approach.
def Sum(n):
sum = 0
while (n != 0):
sum = sum + (n % 10)
n = n//10
return sum
n=int(input("Enter number"))
print("Sum of digits",Sum(n))
Enter number342
Sum of digits 9
Python Program 3: Using recursion
The above method can also be executed by defining a recursive function. Recursive functions are the ones that call themselves inside the function definition. Using recursion will eliminate the need for loops in the code.
Follow the algorithm for a detailed explanation of the working of the program.
Algorithm
Step 1- Define a function sum_of_digits with parameter n for calculating the sum
Step 2- Check if n is less than 10, if true return n
Step 3- Else, divide the number by 10 and calculate the remainder (n%10)
Step 4- Call the function recursively and pass (n//10) as a parameter
Step 5- Return sum of the remainder and the value returned by the function
Step 6- Take input from the user
Step 7- Call function sum_of_digits and pass input as a parameter
Python Program
Look at the program to understand the implementation of the above-mentioned approach.
def sum_of_digit(n):
if n< 10:
return n
else:
return n%10 + sum_of_digit(n//10)
number = int(input("Enter number: "))
# Function call and output display
print("Sum of digit is",sum_of_digit(number))
Enter number: 5421
Sum of digit is 12
Conclusion
We have learned three different ways by which we can calculate the sum of digits of a number in Python. We can use methods of the str class in Python like str() and int() for converting an integer to string and vice-versa.