技术无罪,分享只为大家共同成长
题目:已知1990年1月1号是星期一,公元1年1月1日也是星期一。要求输出某年的日历。
def isr(year):#判断是否为闰年
if year % 400 == 0 or year % 4 == 0 and year % 100 != 0:
return True
def isd(year):#判断输入年份的第一天是周几
s = 0
d = 1
#如果年份大于1900,则通过1900计算;如果小于1900,则通过公元1年计算
if year >= 1900:
while year > 1900:
year -= 1
if isr(year):
s += 366
else:
s += 365
#将1900与所给年份之间所有天数求和
else:
while year > 1:
year -= 1
if isr(year):
s += 366
else:
s += 365
#将1与所给年份之间的所有天数求和
d += s % 7
return d
def show(year, d, l):#输出日历
for i in range(12):
print(i + 1, "月")
print("一\t二\t三\t四\t五\t六\t日")
t = []
a = 0
for j in range(1, l[i] + 1):
t.append(j)
#将每一个日期写入列表中,用于循环输出
print("\t"*(d - 1), sep='', end='')
#用\t控制间隔,end表示不换行
while a <= len(t) - 1:
if d <= 7:
print(t[a], "\t", sep='', end='')
a += 1
d += 1
else:
print()
d = 1
print()
r = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
p = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
year = eval(input("请输入年份:"))
d = isd(year)
if isr(year):
show(year, d, r)
else:
show(year, d, p)