Welcome, guest | Sign In | My Account | Store | Cart
# this is program to convert mathematical number to alphabetical numbers
# this can easily change to any language (but not for example japanese, i think!) by modifying the list below
def translate(d):
    lst1=['one ','two ','three ','for ','five ','six ','seven ','eight','nine','ten','eleven','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen ']
    lst2=['twenty ','thirty ','forty ','fifty ','sixty ','seventy ','eighty ','ninety ']
    lst3=['one hundred ','two hundred ','three hundred ','for hundred ','five hundred ','sixe hundred ','seven hundred ','eight hundred ','nine hundred ']
    lst4=['thousand ','million ','billion ','trillion '] 
    s=''
    t=int();y=int(d)
    if d==0:
        return 'zero'
    while d!=0: #--------- main LOOP

        if d<20: #------if number < 20
            s=s+lst1[d-1]+' '
            return s
        if d>=100 and d<1000:  #------if 100<number < 1000
            s=s+lst3[d/100-1]
            if d%100==0:
                return s
            while(d>99):
                d-=100
        if d>19 and d<100:  #------if number < 100
            y=d%10
            t=d-(d%10)
            s=s+lst2[(t/10)-2]+' '
            if y!=0:
                s=s+lst1[y-1]+' '
            return s
        
        if d>1000000000000:  # ---------------if number < 1000 trilions
            first=str()
            first=translate(d/1000000000000)
            s+=first+' '+lst4[3]+' '
            if d%1000000000000==0:
                return s
            while d>1000000000000:
                d-=1000000000000

        if d>1000000000: #------if number < one triliion
            first=str()
            first=translate(d/1000000000)
            s+=first+' '+lst4[2]+' '
            if d%1000000000==0:
                return s
            while d>1000000000:
                d-=1000000000
                
        if d>=1000000:  #------if number < one bilion  
            first=str()
            first=translate(d/1000000)
            s=s+first+' '+lst4[1]+' '
            if d%1000000==0:
                return s
            while (d>1000000): 
                d-=1000000
        if d==1000:
            return 'One thousand '
                
        if d>1000: #------if number < 1000
            first=str()
            first=translate(d/1000)
            s=s+first+' '+lst4[0]+' '
            if d%1000==0:
                return s
            while (d>1000):
                d-=1000

 # --------------------------------
if __name__=="__main__":
        d=raw_input('enter number or q to quit: ')
        if d=='q':
            exit()
        d=int(d)
        print translate(d)
        print '\n'


    

Diff to Previous Revision

--- revision 3 2011-03-17 06:36:52
+++ revision 4 2011-03-17 06:57:06
@@ -1,5 +1,5 @@
 # this is program to convert mathematical number to alphabetical numbers
-# this can easily change to any language by modifying the list below
+# this can easily change to any language (but not for example japanese, i think!) by modifying the list below
 def translate(d):
     lst1=['one ','two ','three ','for ','five ','six ','seven ','eight','nine','ten','eleven','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen ']
     lst2=['twenty ','thirty ','forty ','fifty ','sixty ','seventy ','eighty ','ninety ']

History