万年历的主要难点:
算出当月一号是星期几
格式化输出字符串
思路:
先指定一个确定了星期几的日期作为参考日期。比如1900/1/1 是星期一。
然后将需要打印万年历的年月算出总天数 -- 参考日期的总天数 = 相差的天数,
对 7 取余,就能得到指定日期是星期几了。算总天数的同时,需要用到 对闰年的判断,和每个月天数的判断,这就是题目提示为什么要算这两个的原因。
格式化输出字符串,因为默认的print每次打印都会换行,Python3 就可以用这个print("%3d"%i,end=''),来不换行输出字符。打印了七次再换行。还有就是用%3d控制打印字符的宽度,就可以对齐了,效果图如下。
日历.png
# -*- coding: utf-8 -*-
def is_leap_year(year):
if (year % 400 == 0 or year % 4 == 0 and year % 100 != 0):
return True
else:
return False
def count_leap_year(year): #算出当年之前的闰年的总个数
count = 0
for i in range(1, year + 1):
if is_leap_year(i):
count += 1
return count
def get_mont