In [3]:
def translate(n):
result = ''
basic_nums = {
1:'one',
2:'two',
3:'three',
4:'four',
5:'five',
6:'six',
7:'seven',
8:'eight',
9:'nine',
10:'ten',
11:'eleven',
12:'twelve',
13:'thirteen',
14:'fourteen',
15:'fifteen',
16:'sixteen',
17:'seventeen',
18:'eighteen',
19:'nineteen',
20:'twenty',
30:'thirty',
40:'forty',
50:'fifty',
60:'sixty',
70:'seventy',
80:'eighty',
90:'ninety',
}
try:
result = basic_nums[n]
except KeyError:
thousands = n // 1000
n %= 1000
if thousands > 0:
result += basic_nums[thousands]
result += ' thousand'
if n == 0:
return result
hundreds = n // 100
n %= 100
if hundreds > 0:
result += basic_nums[hundreds]
result += ' hundred'
if n == 0:
return result
else:
result += ' and'
try:
result += basic_nums[n]
except KeyError:
tens = n // 10
leftover = n % 10
result += basic_nums[tens*10]
result += basic_nums[leftover]
return result
char_count = 0
for num in range(1,1001):
char_count += len(translate(num))
char_count
Out[3]:
In [5]:
translate(4000312)
In [ ]: