Я создаю переводчик цифр в слово и работаю с одним исключением.
У меня проблемы с учетом нулей, например, если выводится число 4056
, введенное в 'four thousand zero hundred fifty six'
.Кроме того, если 50
введено в 'fifty zero'
, выводится.
То, что у меня есть, включено ниже:
def convert(number_str):
d1 = {0: 'zero',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'}
l2 = ['twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']
if (int(number_str) >= 1) and (int(number_str) < 19):
return(d1[number_str])
elif (int(number_str) >= 20) and (int(number_str) <99):
tens, single = divmod(number_str, 10)
return l2[tens-2] + " " + d1[single]
elif (int(number_str) >= 100) and (int(number_str) <999):
hundreds, tens1 = divmod(number_str, 100)
tens, single = divmod(tens1,10)
return(d1[hundreds]+' hundred '+l2[tens-2]+" "+d1[single])
elif (int(number_str) >= 1000) and (int(number_str) <9999):
thousands, hundreds1 = divmod(number_str,1000)
hundreds, tens1 = divmod(hundreds1,100)
tens, single = divmod(tens1,10)
return(d1[thousands]+' thousand '+d1[hundreds]+' hundred '+l2[tens-2]+" "+d1[single])
def main():
user_input = input('> ')
while user_input != 'quit':
print(convert(int(user_input)))
user_input = input('> ')
main()
Какую логику я могу добавить, чтобы лучше справляться с использованием нулей для поддержки этой программы?Заранее спасибо!