Тема: Число прописом.
Може кому потрібно буде. Робив для документів. Пише суму прописом.
def chartosrting(razbor) :
razbor1 = int(razbor)
str_razbor1 = str(razbor1)
chisla = ['одна', 'дві', 'три', 'чотири', 'пять', 'шість', 'сім', 'вісім', 'девять', 'десять', 'одинадцять', 'дванадцять', 'тринадцять', 'чотирнадцять', 'пятнадцять', 'шістнадцять', 'сімнадцять', 'вісімнадцять', 'девятнадцять']
desatki = ['двадцять', 'тридцять', 'сорок', 'пятдесят', 'шістдесят', 'сімдесят', 'вісімдесят', 'девяносто']
sotni = ['сто', 'двісті', 'триста', 'чотириста', 'пятсот', 'шістсот', 'сімсот', 'вісімсот', 'девятсот']
tischs = ['гривень', 'тисяч', 'міліонів', 'міліардів']
#визначаємо кількість триад включая неповні
len_str = len(str_razbor1)
kol_mil = len_str/3
if kol_mil!=int(kol_mil):
kol_mil += 1
kol_mil = int(kol_mil)
marker = 0
stroka = ''
while kol_mil>0:
#обробка сотень, потім їх видаляємо
kol_mil -=1
str_min = str_razbor1[marker:marker+len_str-kol_mil*3]
str_int = int(str_min)
if str_int>=100:
str_int_s = int(str_int/100-1)
stroka += sotni[str_int_s]+' '
str_int_s += 1
str_int -= str_int_s*100
#обробка від 20 до 99, потім видаляєто десятки
if str_int>=20:
str_int_s = int(str_int/10-2)
stroka += desatki[str_int_s]+' '
str_int_s += 2
str_int -= str_int_s*10
#обробка від 1 до 19
str_int_s = int(str_int-1)
if int(str_int)==1 and kol_mil>=2 :
stroka += 'один'+' '
elif int(str_int)==2 and kol_mil>=2 :
stroka += 'два'+' '
else :
if int(str_int)!=0 :
stroka += chisla[str_int_s]+' '
marker = marker+len_str-kol_mil*3
len_str -= len_str-kol_mil*3
if int(str_min)!=0 :
if kol_mil==0 and int(str_int)==1 :
stroka += "гривня"+' '
elif kol_mil==0 and (int(str_int)==2 or int(str_int)==3 or int(str_int)==4 ) :
stroka += "гривні"+' '
elif kol_mil==1 and int(str_int)==1 :
stroka += "тисяча"+' '
elif kol_mil==1 and (int(str_int)==2 or int(str_int)==3 or int(str_int)==4 ) :
stroka += "тисячі"+' '
elif kol_mil==2 and int(str_int)==1 :
stroka += "міліон"+' '
elif kol_mil==2 and (int(str_int)==2 or int(str_int)==3 or int(str_int)==4 ) :
stroka += "міліони"+' '
elif kol_mil==3 and int(str_int)==1 :
stroka += "міліард"+' '
elif kol_mil==3 and (int(str_int)==2 or int(str_int)==3 or int(str_int)==4 ) :
stroka += "міліарди"+' '
else :
stroka += tischs[kol_mil]+' '
#обробка копійок
kop_str = str(int(razbor*100))
kop_len = len(kop_str)
kop_str_full = kop_str[kop_len-2:kop_len]
kop_str = kop_str[kop_len-1:kop_len]
stroka += kop_str_full + ' '
if kop_str=='1':
stroka += 'копійка'
elif kop_str=='2' or kop_str=='3' or kop_str=='4':
stroka += 'копійки'
else:
stroka += 'копійок'
stroka = str.capitalize(stroka)
return stroka