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转义字符表

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歆侈、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值