2 回答

TA贡献1786条经验 获得超11个赞
您可以使用标准库 datetime 模块。
from datetime import date
def validDate(y, m, d):
try:
date(y, m, d)
return True
except ValueError:
return False

TA贡献1833条经验 获得超4个赞
问题出在validDate函数中,您不检查日期,而仅检查月份是否有天数(每个月都为 True)。
def validDate(y, m, d):
assert 1 <= d <= daysIn(y, m)
或者如果validDate应该返回一个布尔值,请尝试:
def validDate(y, m, d):
if y <= 1754:
return False
if not (1 <= m <= 12):
return False
if m in (1, 3, 5, 7, 8, 10, 12):
days = 31
elif m == 2:
leap = y % 4 == 0 and (y % 100 != 0 or y % 400 == 0)
days = 29 if leap else 28
else:
days = 30
return 1 <= d <= days
添加回答
举报