万年历
def print_calendar(days, week):
"""
打印万年历
:param days: 这个月有多少天
:param week: 这个月的第一天是星期几,以0表示星期日
"""
print("星期日\t\t星期一\t\t星期二\t\t星期三\t\t星期四\t\t星期五\t\t星期六")
counter = 0
for i in range(week):
print(end="\t\t\t")
counter += 1
for i in range(1, days + 1):
print(i, end="\t\t\t")
counter += 1
if counter % 7 == 0:
print()
def is_leap_year(year):
"""
判断是否是闰年
:param year: 年份
:return: True => 闰年, False => 平年
"""
return year % 4 == 0 and year % 100 != 0 or year % 400 == 0
def get_month_days(year, month):
"""
计算一个月有多少天
:param year: 年份
:param month: 月份
:return: 有多少天
"""
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif month in [4, 6, 9, 11]:
return 30
elif month == 2:
return 29 if is_leap_year(year) else 28
def get_total_days(year, month):
"""
计算这个月的第一天,距离1900年1月1日相差多少天
:param year: 年份
:param month: 月份
:return: 相差的天数
"""
total = 0
for y in range(1900, year):
total += (366 if is_leap_year(year) else 365)
for m in range(1, month):
total += get_month_days(year, m)
return total + 1
year = int(input("请输入一个年份: "))
month = int(input("请输入一个月份: "))
week = get_total_days(year, month) % 7
days = get_month_days(year, month)
print_calendar(days, week)