Skip to content

Instantly share code, notes, and snippets.

@darth30joker
Created January 24, 2015 17:02
Show Gist options
  • Save darth30joker/fa28edff3fb502365ae3 to your computer and use it in GitHub Desktop.
Save darth30joker/fa28edff3fb502365ae3 to your computer and use it in GitHub Desktop.
transfer numbers
NUM = {
'1': 'one',
'2': 'two',
'3': 'three',
'4': 'four',
'5': 'five',
'6': 'six',
'7': 'seven',
'8': 'eight',
'9': 'nine',
}
TENS = {
'10': 'ten',
'11': 'eleven',
'12': 'twelve',
'13': 'thirteen',
'14': 'fourteen',
'15': 'fifteen',
'16': 'sixteen',
'17': 'seventeen',
'18': 'eighteen',
'19': 'nineteen',
'2': 'twenty',
'3': 'thirty',
'4': 'fourty',
'5': 'fifty',
'6': 'sixty',
'7': 'seventy',
'8': 'eighty',
'9': 'ninety',
'0': ''
}
def do_float(number):
return " ".join([NUM[i] for i in number])
def get_prefix(i):
if i == 1:
return 'thousand'
if i == 2:
return 'million'
if i == 3:
return 'billion'
def do_int(number):
number = list(number)
l = len(number)
g = l / 3
if l / 3.0 > g:
g += 1
numbers = []
for i in range(g):
left = l - (i + 1) * 3
if left < 0:
left = 0
right = l - i * 3
if i > 0:
numbers.insert(0, get_prefix(i))
numbers.insert(0, do_hun(number[left:right]))
return " ".join(numbers)
def do_ten(number):
if number[0] == '1':
number[0] = TENS["%s%s" % (number[0], number[1])]
del(number[1])
else:
if number[0] == '0':
del(number[0])
number[0] = NUM[number[0]]
else:
number[0] = TENS[number[0]]
if number[1] == '0':
del(number[1])
else:
number[1] = NUM[number[1]]
return " ".join(number)
def do_hun(number):
if len(number) == 1:
number[0] = NUM[number[0]]
return " ".join(number)
elif len(number) == 2:
return do_ten(number)
else:
if number[0] == '0':
del(number[0])
return do_ten(number)
else:
number[0] = '%s hundred and' % NUM[number[0]]
number[1] = do_ten(number[1:])
del(number[2])
return " ".join(number)
def transfer(number):
print number
numbers = number.split('.')
if len(numbers) > 1:
return " point ".join([do_int(numbers[0]), do_float(numbers[1])])
return do_int(numbers[0])
def main():
print transfer('1')
print transfer('11')
print transfer('21')
print transfer('111')
print transfer('121')
print transfer('206')
print transfer('101')
print transfer('1111')
print transfer('1234567890')
print transfer("30206064.365")
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment