In this article, we will learn about python program to find sum of digits of given number.
Getting Started
The task is to write a function that gets all the digits of number entered by user. Then, sum them and return it. For example,
If user enters 1234, then sum will be –
1 + 2 + 3 + 4 = 10
10 will be returned by function.
We can do so in many ways –
- Using str() and for Loop
- Using sum() Method
- Using Brute Force Approach
- Using Recursion
- Using ASCII Values
- One Liner Solution
Using str() and for Loop
We can find sum of digits of number in python using str and python for loop as shown below –
Pseudo Algorithm
- Initialize sum = 0
- Run a for loop on input value
- At each iteration, convert each value into integer using int. Then, add it into sum.
- At end of for loop value of variable sum is sum of all digits of given number.
def findSum(n): sum = 0 for i in n: sum += int(i) return sum n = input("Enter a number") print(findSum(n))
Output:
Enter a number 5674 22
Using sum() Method
Pseudo Algorithm
- Our task is to convert input into python list, map() and strip() methods.
- Then, use built-in method, sum(), to get sum of elements present in list.
def findSum(num): numList = list(map(int, num.strip())) return sum(numList) num = input("Enter a number") print(findSum(num))
Output:
Enter a number 7768 28
Using Brute Force Approach
Pseudo Algorithm
- Initialize a variable sum = 0
- Run a while loop until value of variable num becomes 0.
- In each iteration, get the last digit of number and add it to sum.
- Then, divide the num by 10.
- At the end of while loop, value of sum is our desired result.
def findSum(num): sum = 0 while(num != 0): sum = sum + num % 10 num = num // 10 return sum num = int(input("Enter a number")) print(findSum(num))
Output:
Enter a number 1234 10
Using Recursion
Pseudo Algorithm
- In each function call, get the last digit of number.
- After that, add it to result of same function call with number divided by 10.
- Break the function call when number becomes 0.
def findSum(num): if(num == 0): return num else: return (num % 10) + findSum(num // 10) num = int(input("Enter a number")) print(findSum(num))
Output:
Enter a number 6578 26
Improved Version
def findSum(num): return 0 if(num == 0) else (num % 10) + findSum(num // 10) num = int(input("Enter a number")) print(findSum(num))
Output:
Enter a number 1234 10
Using ASCII Values
Pseudo Algorithm
- Run a for loop for each digit of number.
- In each iteration, Difference between ASCII value current digit and 0 will give digit value.
- Then, add it to sum.
- At the end of for loop, value of variable sum is desired result.
def findSum(num): sum = 0 for i in num: sum = sum + (ord(i) - ord('0')) return sum num = input("Enter a number") print(findSum(num))
Output:
Enter a number 768 21
One Liner Solution
n = [int(d) for d in input("Enter a number")] print(sum(n))
Output:
Enter a number 345 12
That’s how we can write python program to find sum of digits of given number.
Learn about other python examples – https://tutorialwing.com/python-tutorial/
Reference: Official Doc