-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalendar.py
51 lines (50 loc) · 3.05 KB
/
calendar.py
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
# Календарь. 2000 оныг тооллын эх болгон ашиглах
# дэлгэц цэвэрлэх функцийг дуудахын тулд `os` нэртэй санг дуудаж байна
import os
# тухайн сар хүртэл жилийн эхнээс хэд хоног өнгөрснийг хадгалсан лист
month_days = (0, 0, 31, 59, 90, 120, 151,
181, 212, 243, 273, 304, 334)
# сарын өдрүүд
mo_days = [0, 31, 28, 31, 30, 31, 30, 31,
31, 30, 31, 30, 31]
# тухайн жил өндөр жил мөн эсэхийг авдаг функц. Хэрвээ мөн бол True, биш бол False утга буцаана
def leap_year(year):
if year % 400 == 0 or (year % 4 == 0 and
year % 100 != 0):
return True
return False
# тухайн жил хүртэл хэдэн өндөр жил байсныг олох
def leap_year_count(year):
s = 0
for y in range(2000, year):
if leap_year(y) == True: # өндөр жил байвал s-ийг нэг-ээр нэмэгдүүлнэ
s += 1
return s
# тухайн он сар өдөр ямар гариг болохыг олох функц
def garig(ye, mo, da):
d = (ye - 2000) * 365 + leap_year_count(ye) # тухайн жилийн эхэн хүртэл хэдэн өдөр өнгөрснийг олж байна
d = d + month_days[mo] # тухайн сарын эхэн хүртэл хэдэн өдөр өнгөрснийг олж байна
if leap_year(ye) and mo > 2: # тухайн жил нь өндөр жил байгаад, сар нь 2 сараас хойш бол 2 сарын 29-ний 1 өдрийг нэмж байна
d += 1
d = d + da # тухайн өдөр хүртэл нийт хэдэн өдөр өнгөрснийг гаргаж байна
gar = (d + 5) % 7 # 7-д модуль аваад үлдэгдэл гаригийн дугаар гарна
if (gar == 0): gar = 7
return gar
# үндсэн програм эхэлж байна
os.system('cls') # дэлгэц цэвэрлэж байна
y1 = int(input("year: "))
m1 = 1
while m1 < 13:
os.system('cls') # сар бүрийн календарийг хэвлэхийн өмнө дэлгэцийг цэвэрлэж байна
print("{:>12}, {}".format(y1, m1)) # жил, сарыг хэвлэж байна
print(" Mo Tu We Th Fr Sa Su") # гаригийн өдрүүдийг хэвлэж байна
if leap_year(y1) and m1 == 2:
mo_days[2] = 29
for i in range(1, mo_days[m1] + 1):
gar = garig(y1, m1, i)
if (i == 1): # сарын эхний өдөр бол өмнө нь хоосон зайг ямар гариг болохоос хамааруулан хэвлэж байна
for j in range(1, gar): print(3*" ", end="")
print("{:>3}".format(i), end="")
if gar == 7: print()
ch = input() # ямар нэгэн даралт хүлээж байна
m1 += 1