前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python制作万年历

用Python制作万年历

作者头像
算法与编程之美
发布2023-12-13 11:50:06
2830
发布2023-12-13 11:50:06
举报
文章被收录于专栏:算法与编程之美

1 问题

如何用Python制作2023年3月的万年历?

2 方法

所谓万年历,就是咱们电脑或者手机的日期会记录每个月每天对应星期几。用python来制作万年历,就是从键盘输入年份和月份,然后输出对应的日历表。

由于里面涉及到平年和闰年,所以需要先判断年份是平年还是闰年,同时之后求每个月天数时还要判断平年和闰年,首先要写一个判断函数leap_year()。然后,需要计算每个月的天数 ,其中需要注意2月份要判断平年和闰年,调用函数leap_year()即可。万年历从1990年1月1日开始,对应星期一。接下来我们计算输入年份year和月份month代表的日期,距离1990年1月1日的天数。

最后,进行显示函数,利用Input()函数从控制台输入。

代码清单 1

#判断平年和闰年 def leap_year(year): if(year%4==0 and year%100==0) or (year%400==0): return True else: return False #计算每个月的天数 def monthdays(year,month): if month==2: if leap_year(year): days=29 else: days=28 elif month in[4,6,9,11]: days=30 else: days=31 return days #计算总天数 def totaldays(year,month): yearday=0 for i in range(1990,year):#计算输入年份之前的 if leap_year(i): yearday+=366 else: yearday+=365 for i in range(1,month):#注意不能包括该月份 yearday+=monthdays(year,i) return yearday #显示函数 year=int(input("请输入年份:")) month=int(input("请输入月份:")) week=(totaldays(year,month))%7 #计算该月第一天是周几 print('一\t二\t三\t四\t五\t六\t日\t') for i in range(0,week): #前面打印week个空格 print("\t",end="") for i in range(1,monthdays(year,month)+1): #c从week+1的位置开始打印数字 if (totaldays(year,month)+i)%7==0: #天数为7的倍数时,记住要换行 print(i,end="\n") else: print(i,end="\t")

3 结语

针对用Python制作万年历的问题,提出使用if判断函数和定义leap_year()函数、monthdays()函数、totaldays()函数的方法,通过实验,证明该方法是有效的,此方法运用的知识常见易懂,但仍有不足或考虑不周的逻辑,未来可以继续研究更高级算法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档