Python Program to Convert a Number to Words (digit by digit)

Given a number and the task is to convert the given number into words.

For Example:

Let number = 15

The outputĀ  will be = “one-five”

Implementation Tips:

Make a global list with words for each digit from 0 to 9. The entries in the list will be mapped to the index, as shown in the table below.

global list = [ ‘zero’,Ā  ‘one’, ……………’Nine’]

index:Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  0Ā  Ā  Ā  Ā  Ā  1 ……………..Ā  Ā  Ā 9

Examples:

Example1:

Input:

Given number = 15

Output:

The conversion of given number{ 15 } into words = 
one five

Example2:

Input:

Given number = 678

Output:

The conversion of given number{ 678 } into words = 
six seven eight

Program to Convert a Number to Words (digit by digit) in Python

Method #1: Using Recursion (Static Input)

Approach:

  • Give the number as static input and store it in a variable.
  • Give the global list with words for each digit from 0 to 9 and store it in another variable.
  • Create a recursive function say convert_numbrtoword() which accepts the given number as an argument and returns the conversion of the given number into words.
  • Inside the function, check if the given number is equal to 0 using the if conditional statement.
  • If it is true, then return an empty string.
  • Else get the spelling for the last digit by giving the index of the global list as given number modulus 10 which gives the last digit of the given number.
  • Store it in a variable.
  • Add the above result and call the convert_numbrtoword() function itself by dividing the number by 10 (Recursive Logic).
  • Store it in another variable.
  • Return the above result.
  • Pass the given number as an argument to the above convert_numbrtoword() function and print it.
  • The Exit of the Program.

Below is the implementation:

# Give the global list with words for each digit from 0 to 9 and
# store it in another variable.
globl_lst = ['zero', 'one', 'two', 'three', 'four',
             'five', 'six', 'seven', 'eight', 'nine']

# Create a function say convert_numbrtoword() which accepts the given number as
# an argument and returns the conversion of the given number into words.


def convert_numbrtoword(gvn_num):

    # Inside the function, check if the given number is equal to 0 using the if
        # conditional statement.
    if(gvn_num == 0):
        # If it is true, then return an empty string.
        return ""

    else:
        # Else get the spelling for the last digit by giving the index of the global
        # list as given number modulus 10 which gives the last digit of the given
        # number.
        # Store it in a variable.
        rslt = globl_lst[gvn_num % 10]

        # Add the above result and call the convert_numbrtoword() function itself by
        # dividing the number by 10 (Recursive Logic).
        # Store it in another variable.
        fnl_rslt = convert_numbrtoword(int(gvn_num/10)) + rslt + " "

    # Return the above result.
    return fnl_rslt


# Give the number as static input and store it in a variable.
gvn_num = 15
print("The conversion of given number{", gvn_num, "} into words = ")
# Pass the given number as an argument to the above convert_numbrtoword()
# function and print it.
print(convert_numbrtoword(gvn_num))

Output:

The conversion of given number{ 15 } into words = 
one five

Method #2: Using Recursion (User Input)

Approach:

  • Give the number as user input using the int(input()) function.
  • Store it in a variable.
  • Give the global list with words for each digit from 0 to 9 and store it in another variable.
  • Create a recursive function say convert_numbrtoword() which accepts the given number as an argument and returns the conversion of the given number into words.
  • Inside the function, check if the given number is equal to 0 using the if conditional statement.
  • If it is true, then return an empty string.
  • Else get the spelling for the last digit by giving the index of the global list as given number modulus 10 which gives the last digit of the given number.
  • Store it in a variable.
  • Add the above result and call the convert_numbrtoword() function itself by dividing the number by 10 (Recursive Logic).
  • Store it in another variable.
  • Return the above result.
  • Pass the given number as an argument to the above convert_numbrtoword() function and print it.
  • The Exit of the Program.

Below is the implementation:

# Give the global list with words for each digit from 0 to 9 and
# store it in another variable.
globl_lst = ['zero', 'one', 'two', 'three', 'four',
             'five', 'six', 'seven', 'eight', 'nine']

# Create a function say convert_numbrtoword() which accepts the given number as
# an argument and returns the conversion of the given number into words.


def convert_numbrtoword(gvn_num):

    # Inside the function, check if the given number is equal to 0 using the if
        # conditional statement.
    if(gvn_num == 0):
        # If it is true, then return an empty string.
        return ""

    else:
        # Else get the spelling for the last digit by giving the index of the global
        # list as given number modulus 10 which gives the last digit of the given
        # number.
        # Store it in a variable.
        rslt = globl_lst[gvn_num % 10]

        # Add the above result and call the convert_numbrtoword() function itself by
        # dividing the number by 10 (Recursive Logic).
        # Store it in another variable.
        fnl_rslt = convert_numbrtoword(int(gvn_num/10)) + rslt + " "

    # Return the above result.
    return fnl_rslt


# Give the number as user input using the int(input()) function.
# store it in a variable.
gvn_num = int(input("Enter some random number = "))
print("The conversion of given number{", gvn_num, "} into words = ")
# Pass the given number as an argument to the above convert_numbrtoword()
# function and print it.
print(convert_numbrtoword(gvn_num))

Output:

Enter some random number = 678
The conversion of given number{ 678 } into words = 
six seven eight