Case18. An integer in the range 100-999 is given. Output a string-description of this number, for example: 256 - "two hundred fifty six", 814 - "eight hundred fourteen."

Solution in Python 3:

import random

edinici = {
1 : 'one',
2 : 'two',
3 : 'three',
4 : 'four',
5 : 'five',
6 : 'six',
7 : 'seven',
8 : 'eight',
9 : 'nine'
}

dcat = {
11 : 'eleven',
12 : 'twelve',
13 : 'thirteen',
14 : 'fourteen',
15 : 'fifteen',
16 : 'sixteen',
17 : 'seventeen',
18 : 'eighteen',
19 : 'nineteen',
}

desyatki = {
10 : 'ten',
20 : 'twenty',
30 : 'thirty',
40 : 'forty',
50 : 'fifty',
60 : 'sixty',
70 : 'seventy',
80 : 'eighty',
90 : 'ninety',
}

sotni = {
100 : 'one hundred',
200 : 'two hundred',
300 : 'three hundred',
400 : 'four hundred',
500 : 'five hundred',
600 : 'six hundred',
700 : 'seven hundred',
800 : 'eight hundred',
900 : 'nine hundred',
}
try:
N = random.randrange(100,999)
#N = 911
propis = ''
print("N = ",N)
q = int(N/100)*100
propis += sotni[q]
#print(propis)
N -= q
if 10 < N and N < 20:
propis += ' ' + dcat[N]
else:
r = N%10
#print("r = ",r)
q = int(N/10)*10
#print("q = ",q)
if q !=0:
propis += ' ' + desyatki[q]
if r != 0:
propis += ' ' + edinici[r]

print(propis)

except KeyError as e:
print('Error',e)