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 "不合法日期"))