Advertisement
BinYamin

Counting Numbers

Mar 27th, 2024
567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. ## simple program to convert any number from digits to english spellings
  2. ## Works for 0 to billion-1
  3. #TODO add argparse
  4.  
  5. def toWords(num):
  6.     #Converts numbers from 0 to 999 to words
  7.     #
  8.     #
  9.  
  10.     op = ""
  11.     if num > 999 or num < 0:
  12.         op += "invalid"
  13.         return
  14.     if num == 0:
  15.         op = numbers[0]
  16.         return
  17.  
  18.     numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
  19.     teens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
  20.     tens = [ '', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninty', 'hundred' ]
  21.     powers = ['hundred', 'thousand', 'million']
  22.  
  23.     szNum = "%03d" % num   
  24.     if int(szNum[0]) != 0:      #Dxx
  25.         op = numbers[int(szNum[0])] + " " + powers[0]
  26.  
  27.     if (szNum[0]!='0') & (szNum[1:3] != '00'):
  28.         op += " and"
  29.  
  30.     if int(szNum[1]) == 1:      #1D
  31.         if op != "":
  32.             op += " "
  33.         op = op + teens[int(szNum[1:3])-10]
  34.         return op
  35.  
  36.     elif szNum[1] != '0':       #Dx
  37.         if op != "":
  38.             op += " "
  39.         op = op + tens[int(szNum[1])]
  40.     if szNum[2] != '0':         #xD
  41.         if op != "":
  42.             op += " "
  43.         op += numbers[int(szNum[2])]
  44.     return op
  45.  
  46.  
  47. def getNumber(num):
  48.     #converts numbers from 0 to 999,999,999 (ie 1billion-1)
  49.     # to words.
  50.     # useds toWords() to spell out chunks of 3 digit nums.
  51.  
  52.     powers = ['hundred', 'thousand', 'million']
  53.     if num > 999999999:
  54.         return "number too big"
  55.  
  56.     lower = num%1000
  57.     thous = num//1000
  58.     mills = thous//1000
  59.     thous = thous%1000
  60.  
  61.     fo = ""
  62.     if mills != 0:
  63.         fo += toWords(mills) + " " + powers[2]
  64.    
  65.     if thous != 0:
  66.         if fo != "":
  67.             fo += " "
  68.         fo += toWords(thous) + " " + powers[1]
  69.  
  70.     if lower != 0:
  71.         if fo != "":
  72.             fo += " "
  73.         fo += toWords(lower)
  74.     if num == 0:
  75.         fo = "zero"
  76.     return fo
  77.  
  78.  
  79. for i in range(0,1999999, 91):
  80.     print( str(i) + ": " + getNumber(i))
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement