如何校验用户输入日期是否符合MM/DD/YYYY格式?代码异常排查
日期格式校验代码问题修复
你的代码存在两个核心问题,导致无论输入是否正确都会提示格式错误:
- 缺少异常处理:
datetime.strptime(date, '%m/%d/%Y')会在输入不符合格式时直接抛出ValueError,程序会直接崩溃,根本走不到后续的判断逻辑。 - 循环逻辑错误:你拿用户输入的日期字符串和格式字符串
'%m/%d/%Y'做比较,这两者永远不可能相等,所以不管输入对不对都会进入循环提示错误,再加上break直接终止循环,等于完全没起到校验作用。
下面是修正后的代码,能实现正确的格式校验,直到用户输入符合要求为止:
from datetime import datetime while True: date = input("Please enter a date in the following format MM/DD/YYYY: ") try: # 尝试按指定格式解析日期 datetime.strptime(date, '%m/%d/%Y') print("日期格式正确!") break # 格式正确则退出循环 except ValueError: # 解析失败时提示错误,让用户重新输入 print("格式错误,请按照MM/DD/YYYY的格式输入日期")
核心改进说明:
- 用
try-except捕获解析异常,这是校验日期格式的标准可靠做法 - 用
while True实现循环输入逻辑,直到用户输入正确格式才退出 - 移除了无意义的格式字符串比较逻辑
内容的提问来源于stack exchange,提问作者hady ayman
相关产品推荐
相关产品推荐

