Python Examples

Python Program - Count digits in an Integer



In Python, count of digits in a given integer can be found out by using below mentioned methods.

Method 1: Using iteration

The method involves the following steps:

Input: MyNum
Step 1: Initialize the count = 0
Step 2: Iterate over MyNum while it is not zero.
   Step 2a: Update MyNum by MuNum // 10
   Step 2b: Increase count by 1
Step 3: Return count

Example:

Input: 564
count: 0

Iteration 1: 
    MyNum: 564 // 10 = 56
    count: 0 + 1 = 1

Iteration 2: 
    MyNum: 56 // 10 = 5
    count: 1 + 1 = 2

Iteration 3: 
    MyNum: 5 // 10 = 0
    count: 2 + 1 = 3

return count = 3

The below block of code shows the implementation of above concept:

#function to count number of digits
def countDigits(MyNum):
  count = 0

  #absolute value of input is taken
  #to handle negative integers
  MyNum = int(abs(MyNum))
  
  while MyNum != 0:
    MyNum = MyNum // 10
    count += 1
  return count

x = 123
y = 459709
print(x, "contains:", countDigits(x), "digits")
print(y, "contains:", countDigits(y), "digits")

The above code will give the following output:

123 contains: 3 digits
459709 contains: 6 digits

Method 2: Using Recursion

The above result can also be achieved using recursive function:

#function to count number of digits
def countDigits(MyNum):
  #absolute value of input is taken
  #to handle negative integers
  MyNum = int(abs(MyNum))
  
  if(MyNum != 0):
    return 1 + countDigits(MyNum//10);
  else:
    return 0

x = 564
y = 980620
print(x, "contains:", countDigits(x), "digits")
print(y, "contains:", countDigits(y), "digits")

The above code will give the following output:

564 contains: 3 digits
980620 contains: 6 digits

Method 3: Using log function

The log (base-10) of absolute value of a given number can be used to find out the number of digits in a given number. Consider the example below:

import math

#function to count number of digits
def countDigits(MyNum):
  return int(math.log10(abs(MyNum))) + 1

x = 564
y = -12345
z = 980620
print(x, "contains:", countDigits(x), "digits")
print(y, "contains:", countDigits(y), "digits")
print(z, "contains:", countDigits(z), "digits")

The above code will give the following output:

564 contains: 3 digits
-12345 contains: 5 digits
980620 contains: 6 digits

Method 4: Using length of string

This can also be achieved by converting the absolute value of number into a string and then finding out the length of the string to get the number of digits in the original number. Consider the example below:

#function to count number of digits
def countDigits(MyNum):
  MyStr = str(int(abs(MyNum)))
  return len(MyStr)

x = 564
y = -12345
z = 980620
print(x, "contains:", countDigits(x), "digits")
print(y, "contains:", countDigits(y), "digits")
print(z, "contains:", countDigits(z), "digits")

The above code will give the following output:

564 contains: 3 digits
-12345 contains: 5 digits
980620 contains: 6 digits