日历(Python)

用Python写一个日历

计算公式

w=(d+2*m+3*(m+1)//5+y+y//4-y//100+y//400)%7+1

如果是一月或者二月的话,需要把1、2月当做上一年的13、14月使用

代码

def get_week_with_date(y,m,d):
    '''根据年月日计算星期几'''
    #把1、2月当做上一年的13、14月使用
    if m==1 :
        y=y-1
        m=13
    elif m==2:
        y=y-1
        m=14
    #使用公式计算出星期几并返回
    w=(d+2*m+3*(m+1)//5+y+y//4-y//100+y//400)%7+1
    return w

def is_leap_year(y):
    '''判断是否为闰年'''
    if year%400==0 or (year%4==0 and year%100!=0):
        return True
    else:
        return False

def get_days_in_month(y,m):
    '''获取指定月份的天数'''
    if m in [1,3,5,7,8,10,12]:
        return 31
    elif m in [4,6,9,11]:
        return 30
    else:
        if is_leap_year(y) :
            return 29
        else:
            return 28

'''1.提示用户输入年月'''
year=int(input("请输入年份:"))
month=int(input("请输入年份:"))

'''2.计算这个月有多少天'''
days=get_days_in_month(year, month)

'''3.按照指定格式显示日期'''
print("一 二 三 四 五 六 日")
print("-"*20)
for i in range(1,days+1):
    w=get_week_with_date(year, month, i)
    if i==1 :
        print(f"{' '*(w-1)*3}",end="")
    else:
        if w==1 :
            print("")
    print(f"{i:02d}",end=" ")
print("")

输出效果

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值