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]:
22916

In [5]:
translate(4000312)


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-3-ef6d91f725a0> in translate(n)
     33     try:
---> 34         result =  basic_nums[n]
     35     except KeyError:

KeyError: 4000312

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-5-a000923d8928> in <module>()
----> 1 translate(4000312)

<ipython-input-3-ef6d91f725a0> in translate(n)
     37         n %= 1000
     38         if thousands > 0:
---> 39             result += basic_nums[thousands]
     40             result += ' thousand'
     41             if n == 0:

KeyError: 4000

In [ ]: