def is_leap_year(year):
"""判断是否为闰年"""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def days_in_month(year, month):
"""计算给定年月的天数"""
if month == 2:
return 29 if is_leap_year(year) else 28
elif month in [4, 6, 9, 11]:
return 30
else:
return 31
def print_month_header():
"""打印月份头部信息"""
print(" 日 一 二 三 四 五 六")
def get_day_of_week(year, month, day):
"""返回给定日期是一周中的第几天(0代表周日,6代表周六)"""
q = day
m = month
if m < 3:
m += 12
year -= 1
k = year % 100
j = year // 100
day_of_week = (q + ((13 * (m + 1)) // 5) + k + (k // 4) + (j // 4) - (2 * j)) % 7
return day_of_week
def print_month(year, month):
"""打印给定年月的万年历"""
print(f"{year}年{month}月")
print_month_header()
first_day = get_day_of_week(year, month, 1)
for _ in range(first_day):
print(" ", end="")
for day in range(1, days_in_month(year, month) + 1):
print(f"{day:2}", end=" ")
if (first_day + day - 1) % 7 == 6:
print()
elif day == days_in_month(year, month):
print()
break
if (first_day + day - 2) % 7 != 6:
print()
def main():
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
if 1 <= month <= 12:
print_month(year, month)
else:
print("月份输入错误,请输入1到12之间的数字。")
if __name__ == "__main__":
main()