Skip to content Skip to sidebar Skip to footer

How To Convert An Integer Number To Words In Python?

Write a function that takes an integer as input argument and returns the integer using words. For example if the input is 4721 then the function should return the string 'fou

Solution 1:

Use modules for it: https://pypi.python.org/pypi/num2words

Also, check similar questions: How do I tell Python to convert integers into words

You can install the modules and see how it is implemented there.

But your problem is solved like:

defnumbers_to_words (number):
    number2word = {'1': "one", '2': "two", '3': "three", '4': "four", '5': "five", '6': "six",
            '7': "seven", '8': "eight", '9': "nine", '0': "zero"}
    return" ".join(map(lambda i: number2word[i], str(number)))


print(numbers_to_words(1234))

Solution 2:

There is a way that is simpler than the rest:

defnumber_to_words(number)
    words = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
    return" ".join(words[int(i)] for i instr(number))

Solution 3:

defnumber_to_words(number):
    dict={"1":"one","2":"two","3":"three","4":"four","5":"five","6":"six","7":"seven","8":"eight","9":"nine","0":"zero"}
    s=""for c instr(number):
        s+=dict[c]+" "#if it's matter that the string won't conatain#space at the end then add the next line:
    s=s[:-1]

    return s

Solution 4:

This will help you where you can't import modules for converting numbers to words. This code is for converting numbers from 1 to 1000 both inclusive.

def integer_to_english(number):
    if number>=1 and number<=1000:
        a = ['','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen','twenty ','thirty ','fourty ','fifty ','sixty ','seventy ','eighty ','ninty ']
        if number<=20:
            if number%10==0: return a[number]
            else: return a[number]
        elif number<100:
            b=number-20
            r=b%10
            b//=10return a[20+b]+a[r]
        elif number<1000:
            if number%100==0:
                b=number//100return a[b]+' hundred'else:
                r=number%100
                b=number//100if r<=20:
                    return a[b]+' hundred'+' and '+a[r]
                else:
                    r=r-20
                    d=r//10
                    r%=10return a[b]+' hundred'+' and '+a[20+d]+a[r]
        elif number==1000:
            return'one thousand'else:
            return -1

number=789
print(integer_to_english(number))

Solution 5:

I would use re.sub

>>> defNumbers_To_Words (number):
    dict_ = {'1': "one", '2': "two", '3': "three", '4': "four", '5': "five", '6': "six", '7': "seven", '8': "eight", '9': "nine", '0': "zero"}
    return re.sub(r'\d', lambda m: dict_[m.group()] + ' ', str(number)).strip()

>>> print Numbers_To_Words(4721)
four seven two one
>>> print Numbers_To_Words(98765423)
nine eight seven six five four two three

Post a Comment for "How To Convert An Integer Number To Words In Python?"