为什么elif在我的Python示例中不起作用?
我已经阅读了关于这个主题的其他几个问题,我的识别似乎是正确的,我真的不明白为什么下面的代码不起作用为什么elif在我的Python示例中不起作用?,python,if-statement,Python,If Statement,我已经阅读了关于这个主题的其他几个问题,我的识别似乎是正确的,我真的不明白为什么下面的代码不起作用 import datetime def validate(date_text): if datetime.datetime.strptime(date_text, '%Y-%m-%d'): print('format is YMD') elif datetime.datetime.strptime(date_text, '%Y-%d-%m'): print('format
import datetime
def validate(date_text):
if datetime.datetime.strptime(date_text, '%Y-%m-%d'):
print('format is YMD')
elif datetime.datetime.strptime(date_text, '%Y-%d-%m'):
print('format is YDM')
elif datetime.datetime.strptime(date_text, '%d-%m-%Y'):
print('format is DMY')
elif datetime.datetime.strptime(date_text, '%m-%d-%Y'):
print('format is MDY')
else:
print('other')
validate('2003-12-23')
这很有效
validate('2003-23-12')
这不行!我得到以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-45-d6fe5c34e65c> in <module>()
----> 1 validate('2003-23-12')
2 frames
/usr/lib/python3.7/_strptime.py in _strptime(data_string, format)
357 if not found:
358 raise ValueError("time data %r does not match format %r" %
--> 359 (data_string, format))
360 if len(data_string) != found.end():
361 raise ValueError("unconverted data remains: %s" %
ValueError: time data '2003-23-12' does not match format '%Y-%m-%d'
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1验证('2003-23-12')
2帧
/usr/lib/python3.7//u strptime.py in.\u strptime(数据字符串,格式)
357如果未找到:
358 raise VALUERROR(“时间数据%r与格式%r不匹配”%
-->359(数据字符串,格式))
360 if len(数据字符串)!=已找到。结束()
361 raise VALUE ERROR(“未转换的数据剩余:%s”%
ValueError:时间数据“2003-23-12”与格式“%Y-%m-%d”不匹配
提前感谢您的帮助,我真的不明白为什么它不起作用!我的标识似乎是正确的。这是因为您在本月发送了23个。可能只是捕获错误并返回false。当
strtime
失败时,它不会返回错误值,它会引发异常,从而阻止任何进一步的代码执行,除非你用try.。除了ValueError
…啊,我明白你的意思了,谢谢!请注意,这段代码从根本上被破坏了,无论如何-1/3的时间,天数在几个月的有效范围内,所以你不可能区分YMD和YDM。是的,我知道这一点,谢谢