-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhome_work.py
More file actions
82 lines (72 loc) · 4.26 KB
/
home_work.py
File metadata and controls
82 lines (72 loc) · 4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"""
Нельзя пользоваться дополнительными библиотеками.
Написать программу. На вход подается дата в числовом виде, на выходе дата, прописанная словами.
Год вводится в 4х значном формате. Программа должна содержать функции:
year_to_word(n) переводит год
month_to_word(n) переводит месяц
date_to_word(n) переводит число месяца в слова
Например:
1. In: 21.03.2025
out: двадцать первое марта две тысячи двадцать пятого года
2. In: 2.08.1901
out: второе августа одна тысяча девятьсот первого года
"""
def year_to_word(n): # переводит год
special = ["", "одна тысяча", "две тысячи", "три тысячи", "четыре тысячи", "пять тысяч", "шесть тысяч",
"семь тысяч", "восемь тысяч", "девять тысяч"]
tens = [
["", "первого", "второго", "третьего", "четвертого", "пятого", "шестого", "седьмого", "восьмого", "девятого"],
["десятого", "одиннадцатого", "двенадцатого", "тринадцатого", "четырнадцатое", "пятнадцатое", "шестнадцатое",
"семнадцатое", "восемнадцатое", "девятнадцатое"],
["двадцат"],
["тридцат"]
]
tens_alter = [
["сорокового", "сорок "],
["пятидесятого", "пятьдесят "],
["шестидесятого", "шестьдесят "],
["семидесятого", "семьдесят "],
["восьмидесятого", "восемьдесят "],
["девятидесятого", "девяносто "],
]
hundreds = ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"]
last_two = (n % 1000) % 100
last = last_two % 10
pre_last = last_two // 10
if pre_last == 1:
word = f"{tens[date[-2]][date[-1]]}"
elif pre_last > 3:
pref = tens_alter[pre_last - 4][bool(last)]
suff = tens[0][last]
word = pref + suff
else:
pref = tens[pre_last][0] + str('ь ' if bool(last) else 'ого') if bool(pre_last) else ""
suff = tens[0][last]
word = pref + suff
thousands = n // 1000
return f"{special[thousands]} {hundreds[n % 1000 // 100]} {word}"
def month_to_word(n): # переводит месяц
return ["", "января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря"][n]
def date_to_word(n): # переводит число месяца в слова
words = [
["", "первое", "второе", "третье", "четвертое", "пятое", "шестое", "седьмое", "восьмое", "девятое"],
["десятое", "одиннадцатое", "двенадцатое", "тринадцатое", "четырнадцатое", "пятнадцатое", "шестнадцатое",
"семнадцатое", "восемнадцатое", "девятнадцатое"],
["двадцат"],
["тридцат"]
]
last = n % 10
first = n // 10
if first == 1:
return words[first][last]
else:
pref = words[first][0] + str('ь ' if bool(last) else 'ое') if bool(first) else ""
suff = words[0][last]
return f"{pref}{suff}"
# print(*list(map(date_to_word, range(1, 31))), sep='\n')
# print(*list(map(month_to_word, range(1, 12))), sep='\n')
# print(*list(map(month_to_word, range(1, 3000))), sep='\n')
date = input("Введите дату в формате dd.mm.yyyy: ")
day, month, year = map(int, date.split('.'))
print(f"{date_to_word(day)} {month_to_word(month)} {year_to_word(year)} года")