问题描述
当遇到来自用户输入无效日期的 ValueError 时,是否可能没有错误?例如,如果我在日期框中输入“123456”,程序就会出错。理想情况下,它会要求用户再次尝试输入日期,就像他们刚刚输入错误的日期长度一样。
import datetime
from datetime import timedelta
#start date
while True:
startDate = input('Start Date (DDMMYY): ')
if startDate == '':
startDate = datetime.date.today() - timedelta(days=1) #defaults to yesterday
break
elif len(startDate) == 6:
startDate = datetime.datetime.strptime(startDate,'%d%m%y').date() #converts input to proper date format if correct length
break
print('Date must be in format DDMMYY,please try again')
#end date
while True:
endDate = input('End Date (DDMMYY): ')
if endDate == '':
endDate = datetime.date.today() #defaults to today
break
elif len(endDate) == 6:
endDate = datetime.datetime.strptime(endDate,'%d%m%y').date()
break
print('Date must be in format DDMMYY,please try again')
print(startDate)
print(endDate)
解决方法
是的,您可以使用像这样的 try-except 语句
#start date
while True:
startDate = input('Start Date (DDMMYY): ')
if startDate == '':
startDate = datetime.date.today() - timedelta(days=1) #defaults to yesterday
break
elif len(startDate) == 6:
try:
startDate = datetime.datetime.strptime(startDate,'%d%m%y').date() #converts input to proper date format if correct length
break
except:
print('Date must be in format DDMMYY,please try again')