其他分享
首页 > 其他分享> > 2021-09-20

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