
yari
06.12.2017
09:55:47
Кто-нибудь может расписать как переписать код поб объектное ориентирование?
my_number = int(input('Введите число до 1 миллиарда '))
male = 0
female = 1
neutral = 2
form1 = 0
form2 = 1
form3 = 2
sotni_names = [
None,"сто","двести","триста","четыреста","пятьсот"
,"шестьсот","семьсот","восемьсот","девятьсот"
]
desyatki_names = [
None,None,"двадцать","тридцать","сорок","пятьдесят","шестьдесят"
,"семьдесят","восемьдесят","девяносто"
]
edinitsi_names = [
None,None,None,"три","четыре","пять","шесть","семь"
,"восемь","девять","десять","одиннадцать","двенадцать"
,"тринадцать","четырнадцать","пятнадцать","шеснадцать"
,"семнадцать","восемнадцать","девятнадцать"
]
edinitsi_names_2 = [
[None,"один","два"],
[None,"одна","две"],
[None,"одно","два"]
]
part_names = [
None,
(female,["тысяча","тысячи","тысяч"]),
(male,["миллион","миллиона","миллионов"]),
(male,["миллиард","миллиарда","миллиардов"])
]
forms = [2,0,1,1,1,2,2,2,2,2]
def to_text_2(n,rod):
if n==0:
return (None,None)
sotni = n//100
desyatki = (n%100)//10
edinitsi = n%20
form = forms[n%10]
parts = []
if sotni>0:
parts.append(sotni_names[sotni])
if desyatki>1:
parts.append(desyatki_names[desyatki])
edinitsi = n%10
if desyatki==1:
form = 2
if edinitsi>2:
parts.append(edinitsi_names[edinitsi])
elif edinitsi>0:
parts.append(edinitsi_names_2[rod][edinitsi])
return (" ".join(parts), form)
def to_text(n,rod):
parts = []
for i in range(0,len(part_names)):
names = None
if i==0:
part_rod = rod
else:
(part_rod,names) = part_names[i]
(text,form) = to_text_2(n%1000,part_rod)
if text is not None:
if names is not None:
parts.insert(0,names[form])
parts.insert(0,text)
n = n//1000
return " ".join(parts)
print(to_text(my_number,0))