输入一个日期,判断这个日期是否存在。 1,3,5,7,8,10,121,3,5,7,8,10,12 月有 3131 天; 4,6,9,114,6,9,11 月有 3030 天; 非闰年的 22 月有 2828 天; 闰年的 22 月有 2929 天; 非整百年,能被 44 整除的为闰年,整百年,能被400整除的是闰年。 输入 输入三个整数 y,m,d�,�,� 分别表示年月日 (−10≤y,m,d≤3000)(−10≤�,�,�≤3000)。 输出 如果日期存在输出 YES��� 否则输出 NO��。
时间: 2023-09-13 11:08:46 浏览: 173
好的,根据您的要求,我可以编写如下代码来判断输入的日期是否存在:
```python
def is_leap_year(year):
# 判断是否是闰年
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return True
else:
return False
def is_valid_date(y, m, d):
# 判断日期是否存在
if m in (1, 3, 5, 7, 8, 10, 12):
if d <= 31:
return True
elif m in (4, 6, 9, 11):
if d <= 30:
return True
elif m == 2:
if is_leap_year(y):
if d <= 29:
return True
else:
if d <= 28:
return True
return False
# 示例输入:2021年3月31日
y, m, d = 2021, 3, 31
if is_valid_date(y, m, d):
print("YES")
else:
print("NO")
```
这段代码中,我们先定义了一个 `is_leap_year` 函数来判断是否是闰年,然后定义了一个 `is_valid_date` 函数来判断输入的日期是否存在。在 `is_valid_date` 函数中,我们首先判断月份是否在 `1,3,5,7,8,10,12` 中,如果是,则天数必须小于等于 31;如果月份在 `4,6,9,11` 中,则天数必须小于等于 30;如果月份为 2,则需要根据是否是闰年来判断天数是否小于等于 29 或 28。如果日期存在,则返回 `True`,否则返回 `False`。
最后,我们根据示例输入调用 `is_valid_date` 函数,如果返回 `True`,则输出 "YES",否则输出 "NO"。
阅读全文