💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 4.3.4 第四层设计 先考虑 days 函数的实现。我们将每个月的天数放在列表中,然后通过月份进行索引即 可得到该月天数。要注意有个特殊情形,即闰年 2 月份。这时应当为天数多加 1 天。代码如 下: ``` def days(y,m): month_days = [31,28,31,30,31,30,31,31,30,31,30,31] d = month_days[m] if (m == 1) and (y%4 == 0 and (y%100 != 0 or y%400 == 0)): d = d + 1 return d ``` 接着考虑函数 layout 的实现。本函数根据 first 和 d,将每一个日期填入日历框架(图 4.9)。 ``` def layout(first,d): frame = 42 * [""] if first == 0: first = 7 j = first - 1 for i in range(1,d+1): frame[j] = i j = j + 1 return frame ``` 最后实现 printMonth 函数。日历布局已经保存在列表 frame 之中,函数要做的事情就是将列表成员打印出来。其中的关键是掌握好换行的时机,采用了日历框架后这一点变得很简单,只需每输出 frame 的七个成员就换行一次。代码如下: ``` def printMonth(frame): for i in range(42): print "%3s" % (frame[i]), if (i+1)%7 == 0: print ``` 至此,我们为 calendar 程序设计的所有模块都已实现。