Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## simple program to convert any number from digits to english spellings
- ## Works for 0 to billion-1
- #TODO add argparse
- def toWords(num):
- #Converts numbers from 0 to 999 to words
- #
- #
- op = ""
- if num > 999 or num < 0:
- op += "invalid"
- return
- if num == 0:
- op = numbers[0]
- return
- numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
- teens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
- tens = [ '', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninty', 'hundred' ]
- powers = ['hundred', 'thousand', 'million']
- szNum = "%03d" % num
- if int(szNum[0]) != 0: #Dxx
- op = numbers[int(szNum[0])] + " " + powers[0]
- if (szNum[0]!='0') & (szNum[1:3] != '00'):
- op += " and"
- if int(szNum[1]) == 1: #1D
- if op != "":
- op += " "
- op = op + teens[int(szNum[1:3])-10]
- return op
- elif szNum[1] != '0': #Dx
- if op != "":
- op += " "
- op = op + tens[int(szNum[1])]
- if szNum[2] != '0': #xD
- if op != "":
- op += " "
- op += numbers[int(szNum[2])]
- return op
- def getNumber(num):
- #converts numbers from 0 to 999,999,999 (ie 1billion-1)
- # to words.
- # useds toWords() to spell out chunks of 3 digit nums.
- powers = ['hundred', 'thousand', 'million']
- if num > 999999999:
- return "number too big"
- lower = num%1000
- thous = num//1000
- mills = thous//1000
- thous = thous%1000
- fo = ""
- if mills != 0:
- fo += toWords(mills) + " " + powers[2]
- if thous != 0:
- if fo != "":
- fo += " "
- fo += toWords(thous) + " " + powers[1]
- if lower != 0:
- if fo != "":
- fo += " "
- fo += toWords(lower)
- if num == 0:
- fo = "zero"
- return fo
- for i in range(0,1999999, 91):
- print( str(i) + ": " + getNumber(i))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement