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 year0==0) or (year@0==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()函数的方法,通过实验,证明该方法是有效的,此方法运用的知识常见易懂,但仍有不足或考虑不周的逻辑,未来可以继续研究更高级算法。