1.输入年份,输入月份
2.格式化输出本月的日历
3.思路输入年,月,打印对应年月的日历。
3.1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星期四,现在大多的手机的日历功能只能显示到1970年1月1日这一天;
3.2,要想打印某年某月的日历,首先应该计算出这个月1号是星期几?
解决1号是星期几?
3.2.1: 先计算出年天数,即截至这一年1月1号的天数,用for循环,从1970年开始,闰年 + 366,平年 + 365;
3.2.2: 计算出月天数,即截至本月1号的天数,用for循环,从1月份开始,算出月天数;
3.2.3: 用年天数加月天数,求得本月1号距离1970年1月1号的总天数,用总天数来判断本月1号是星期几;
3.3, 判断本月的总天数;
3.4, 打印日历;
4.运行效果图1:
运行效果图2:
5.代码实现
:
# 定义判断闰年的函数,是闰年返回True,不是返回False def isLeapYear(year): if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): return True else: return False # 定义计算从1970年到截止到今年的 年天数的函数 def yearsDays(year): totalDays = 0 for i in range(1970, year): # print("%d年" % i) if isLeapYear(i): totalDays += 366 else: totalDays += 365 return totalDays # 定义计算本年一月截止到目前月的 月天数的函数 def monthsDays(year, month): s = ("0", "31", "60", "91", "121", "152", "182", "213", "244", "274", "305", "335") days = int(s[month - 1]) # print(month,"月") if isLeapYear(year): days = days else: if month == 1: days = 0 elif month == 2: days == 31 else: days = days - 1 return days # 定义计算本月的天数 def thisMonthDays(year, month): if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12: return 31 elif isLeapYear(year) and month == 2: return 29 elif (not isLeapYear(year)) and month == 2: return 28 else: return 30 # 计算本月一号是星期几的函数 def week(year, month): thisDay = 0 yDays = yearsDays(year) mDays = monthsDays(year, month) # 计算出来年天数和月天数的总和 sumDays = yDays + mDays if sumDays % 7 == 0: thisDay = 4 else: if (sumDays % 7 + 4 > 7): thisDay = abs(sumDays % 7 - 3) else: thisDay = sumDays % 7 + 4 # print("星期%d" % thisDay) return thisDay # 定义打印顶部标题栏函数 def printTitle(year, month): print("-------------------------------------%s年%d月----------------------------------------" % (year, month)) s = ("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六") for i in s: print("%-10s" % i, end="") print() # 打印主体部分 def printMain(year, month): day1 = week(year, month) day2 = thisMonthDays(year, month) # 打印空白地方 if day1 != 7: for i in range(1, day1 + 1): s = " " print("%-13s" % s, end="") # 打印其他地方 for j in range(day1 + 1, day1 + day2 + 1): if j % 7 == 0: print("%-13d" % (j - day1)) else: print("%-13d" % (j - day1), end="") year = int(input("请输入年份:")) month = int(input("请输入月份:")) printTitle(year, month) printMain(year, month)
时间: 2024-10-21 22:25:23