2021-09-20
作者:互联网
python日历打印算法
题目
在指定位置完成函数编写,根据年和月,打印该月的日历。(计算某一天是星期几的公式见Python表达式问题求解实训)。试题中已定义了三个函数,请完成这三个函数,其中函数day用于计算并返回某年某月某日是星期几;函数isLeapYear用于判断某年是否是闰年;函数calendar打印所给年月的日历,注意输出格式要求和空格的对齐,如下图所示,具体的空格数请参见本题代码。
打印样式如下
判断某年某月某日是星期几的函数
返回结果为数字的星期几
def day(y, m, d):#计算y年m月d日是星期几
y0=y-(14-m)//12
x=y0+y0//4-y0//100+y0//400
m0=m+12*((14-m)//12)-2
d0=(d+x+(31*m0)//12)%7
return d0
判断是否是闰年函数
闰年判断:能被4整除但不能被100整除,还要能被400整除
def isLeapYear(year): #判断year年是否闰年
if (year % 4 == 0 and year % 100 != 0 or year % 400 == 0):
isLeapYear=True
else:
isLeapYear=False
return isLeapYear
打印日历函数
这里主要注意打印的格式,用\000表示一个空格,用\t表示4个空格
def calendar(y, m): #打印y年m月日历
print(' {}年{}月'.format(y,m))
print('Su\tM\tTu\tW\tTh\tF\tSa')
tf=isLeapYear(y)
d0=day(y,m,1)
if d0<7 and d0>=0:
for p in range(0,d0):
print("\000\t",end='')
if m==2 and tf==True:
q=29
elif m==2 and tf==False:
q=28
elif (m<8 and m%2==1)or(m>7 and m%2==0):
q=31
else:
q=30
for i in range(1,q+1):
print("%d\t"%i,end='')
d0+=1
if d0%7==0:
print("")
print("")
这里附上python转义字符表
[参考文档]python3转义字符表
标签:09,20,函数,isLeapYear,打印,2021,print,y0,d0 来源: https://blog.csdn.net/qq_51532164/article/details/120390436