1. 功能说明:

根据输入的日期信息,判断并输出相应的判断结果

2. 分析:

  • 确定输入的年份是否为闰年
  • 年份是 4 的倍数但不是 100 的倍数
  • 年份是 400 的倍数
  • 根据月份确定日期的上限
  • 1、3、5、7、8、10、12最多31天
  • 4、6、9、11最多30天
  • 2月
  • 闰年最多29天
  • 平年最多28天

3. 代码

# -*- coding:utf-8 -*-

# 判断日期是否合法:输入格式:2021-3-9
date = input("日期 = ")
leap = False   # 判断是否为闰年
legal = False  # 判断是否合法

# 记录 30天和 31天的月份
month1 = {1, 3, 5, 7, 8, 10, 12}
month2 = {4, 6, 9, 11}

# 将输入数据按 ‘-’ 分割
year, month, day = (int(x) for x in tuple(date.split("-")))

# 判断月份是否为闰年
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    leap = True
if month in month1:
    if 1 <= day <= 31:
        legal = True
elif month in month2:
    if 1 <= day <= 30:
        legal = True
elif month == 2:
    if not leap and 1 <= day <= 28:
        legal = True
    elif leap and 1 <= day <= 29:
        legal = True
print("%d年%d月%d日是%s" % (year, month, day, "合法日期" if legal else "不合法日期"))