def num_to_words
: h, rem = n // 100, n % 100; match h: case 1: h_word="сто"; case 2: h_word="двести"; case 3: h_word="триста"; case 4: h_word="четыреста"; case 5: h_word="пятьсот"; case 6: h_word="шестьсот"; case 7: h_word="семьсот"; case 8: h_word="восемьсот"; case 9: h_word="девятьсот";
if 10 <= rem <= 19:
match rem: case 10: t_word="десять"; case 11: t_word="одиннадцать"; case 12: t_word="двенадцать"; case 13: t_word="тринадцать"; case 14: t_word="четырнадцать"; case 15: t_word="пятнадцать"; case 16: t_word="шестнадцать"; case 17: t_word="семнадцать"; case 18: t_word="восемнадцать"; case 19: t_word="девятнадцать";
return f"{h_word} {t_word}"
else:
t, o = rem // 10, rem % 10; t_word=""; o_word=""
match t: case 0: t_word=""; case 2: t_word="двадцать"; case 3: t_word="тридцать"; case 4: t_word="сорок"; case 5: t_word="пятьдесят"; case 6: t_word="шестьдесят"; case 7: t_word="семьдесят"; case 8: t_word="восемьдесят"; case 9: t_word="девяносто"
match o: case 0: o_word=""; case 1: o_word="один"; case 2: o_word="два"; case 3: o_word="три"; case 4: o_word="четыре"; case 5: o_word="пять"; case 6: o_word="шесть"; case 7: o_word="семь"; case 8: o_word="восемь"; case 9: o_word="девять"
return " ".join(filter(bool, [h_word, t_word, o_word]))
# Пример использования:
print(num_to_words(256)) # вывод: "двести пятьдесят шесть"
print(num_to_words(814)) # вывод: "восемьсот четырнадцать"