Python - 没有从try和except子句返回

时间:2016-01-03 12:30:25

标签: python function validation date try-except

如果提供了无效条目,则此代码(日期)的返回为“无”,然后给出有效条目。但是,如果第一次给出有效条目,则会给出正确的日期返回。关于我如何解决它的任何提示?

def getDate():
    date = input("Please enter the date in DD/MM/YYYY format: ")
    try:
        strptime(date, "%d/%m/%Y")
        return date
    except:
        print ("Invalid Date, please enter again")
        getDate()

1 个答案:

答案 0 :(得分:3)

由于有很多错误的答案被发布到这个问题,我觉得有必要添加另一个。在except子句中添加return getDate()将使其按预期工作:

def getDate():
    date = input("Please enter the date in DD/MM/YYYY format: ")
    try:
        strptime(date, "%d/%m/%Y")
        return date
    except:
        print ("Invalid Date, please enter again")
        return getDate()

但是,使用递归处理重试并不理想。改为使用循环:

from time import strptime

def getDate():
    while True:
        date = input("Please enter the date in DD/MM/YYYY format: ")
        try:
            strptime(date, "%d/%m/%Y")
            return date
        except ValueError:
            print ("Invalid Date, please enter again")