在Python编程语言中,使用类来编写万年历是一种非常实用的方法,通过类,我们可以更好地封装万年历的相关属性和方法,使得代码更加模块化、易于维护,下面,我将详细介绍如何使用Python类来编写一个万年历。
我们需要分析万年历的基本功能,一个简单的万年历需要实现以下功能:根据年月日计算星期几、判断闰年、显示某月的日历等,我们将这些功能封装到一个名为Calendar
的类中。
class Calendar: def __init__(self, year, month, day): self.year = year self.month = month self.day = day def is_leap_year(self, year): """判断是否为闰年""" return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) def get_weekday(self, year, month, day): """计算星期几,返回0-6代表星期一到星期日""" # Zeller公式计算星期几 if month == 1 or month == 2: month += 12 year -= 1 k = year % 100 j = year // 100 h = day + 13 * (month + 1) // 5 + k + k // 4 + j // 4 + 5 * j return h % 7 def show_month_calendar(self): """显示当前月的日历""" # 获取当前月第一天是星期几 first_day = self.get_weekday(self.year, self.month, 1) # 获取当前月的天数 days = [31, 29 if self.is_leap_year(self.year) else 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] month_days = days[self.month - 1] # 打印日历头部 print("Sun Mon Tue Wed Thu Fri Sat") print(" " * first_day, end="") for day in range(1, month_days + 1): print(f"{day:3}", end=" ") if (first_day + day) % 7 == 0: print() # 换行 print() # 打印完整个月后换行
下面,我们来具体看看如何使用这个Calendar
类。
1、创建一个Calendar对象:
calendar = Calendar(2022, 10, 1)
2、判断2022年是否为闰年:
print(calendar.is_leap_year(2022)) # 输出:False
3、计算2022年10月1日是星期几:
print(calendar.get_weekday(2022, 10, 1)) # 输出:4,代表星期五
4、显示2022年10月的日历:
calendar.show_month_calendar()
以下是输出结果:
Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31