Skip to content

Instantly share code, notes, and snippets.

@rsayers
Created January 21, 2014 20:13
Show Gist options
  • Save rsayers/8547480 to your computer and use it in GitHub Desktop.
Save rsayers/8547480 to your computer and use it in GitHub Desktop.
After searching for a library to spell out the names of integers, I decided to roll my own. Its far easier than I expected
def name(n):
onesteens = ['one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']
tens = ['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']
if n < 20:
return onesteens[n-1]
if n > 19 and n < 100:
dm = divmod(n,10)
ret = tens[ int((n/10)-2) ]
if dm[1]==0:
return ret
return "%s-%s" % (ret, name(dm[1]))
if n>99 and n<1000:
dm = divmod(n,100)
if dm[1]==0:
return "%s hundred" % name(dm[0])
return "%s hundred and %s" % (name(dm[0]), name(dm[1]))
if n>999:
dm = divmod(n,1000)
if dm[1]==0:
return "%s thousand" % name(dm[0])
return "%s thousand %s" % (name(dm[0]), name(dm[1]))
for i in range(1000):
print(name(i+1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment