Regex 年龄检查器蟒蛇3 18+;

Regex 年龄检查器蟒蛇3 18+;,regex,python-3.x,Regex,Python 3.x,我需要一个Pyhton3上的程序来检查用户是否超过18岁。 输入:出生日期。4种格式(25/12/2000,25-12-2000,25.12.2000,25_12_2000) 如果打印错误(格式错误) 输出:“欢迎使用系统”或“很抱歉,当您年满18岁时,您又回来了” 如果你需要我愚蠢的尝试: from datetime import datetime, date def try_parsing_date(text): for fmt in ('%d/%m/%Y', '%

我需要一个Pyhton3上的程序来检查用户是否超过18岁。 输入:出生日期。4种格式(25/12/2000,25-12-2000,25.12.2000,25_12_2000) 如果打印错误(格式错误) 输出:“欢迎使用系统”或“很抱歉,当您年满18岁时,您又回来了” 如果你需要我愚蠢的尝试:

from datetime import datetime, date

    def try_parsing_date(text):
        for fmt in ('%d/%m/%Y', '%d.%m.%Y', '%d-%m-%Y', '%d_%m_%Y'):
            try:
                return datetime.strftime(text,fmt)
            except ValueError:
                pass
        raise ValueError('no valid date format')
    dob  = input('Введите свой день рождения (дд/мм/гггг): ')
    try_parsing_date(dob)
也许用正则表达式来处理它

```re_age_checker= "^(0[1-9]|[12][0-9]|3[01])[- \/.,_](0[1-9]|1[012])[- \/.,_](19|20)\d\d"```

你的尝试是一个很好的开始,但你混淆了;改变这个

也许用正则表达式来处理它

```re_age_checker= "^(0[1-9]|[12][0-9]|3[01])[- \/.,_](0[1-9]|1[012])[- \/.,_](19|20)\d\d"```
这是不可取的。在进行上述更改后,我们可以使用函数的结果
try\u parsing\u date
计算18岁生日,并将其与今天的日期进行简单比较:

dt = try_parsing_date(dob)
import time
# compute the 18th birthday:
d = date.fromtimestamp(time.mktime((dt.year+18, dt.month, dt.day, *(0,)*6)))
if d <= date.today():
    print("welcome to system")
else:
    print("sorry comeback when you will be 18+")
dt=尝试解析日期(dob)
导入时间
#计算18岁生日:
d=日期.fromtimestamp(time.mktime((dt.year+18,dt.month,dt.day,*(0,)*6)))

如果你的尝试是一个好的开始,但是你混淆了;改变这个

也许用正则表达式来处理它

```re_age_checker= "^(0[1-9]|[12][0-9]|3[01])[- \/.,_](0[1-9]|1[012])[- \/.,_](19|20)\d\d"```
这是不可取的。在进行上述更改后,我们可以使用函数的结果
try\u parsing\u date
计算18岁生日,并将其与今天的日期进行简单比较:

dt = try_parsing_date(dob)
import time
# compute the 18th birthday:
d = date.fromtimestamp(time.mktime((dt.year+18, dt.month, dt.day, *(0,)*6)))
if d <= date.today():
    print("welcome to system")
else:
    print("sorry comeback when you will be 18+")
dt=尝试解析日期(dob)
导入时间
#计算18岁生日:
d=日期.fromtimestamp(time.mktime((dt.year+18,dt.month,dt.day,*(0,)*6)))

如果d只允许一种格式,那么处理起来可能会更容易。您要做的第一件事就是验证用户输入,检查用户提供的数据是否有效。在验证之后,所有的日期格式都是相似的,只需更改分隔符。也许只允许一种格式更容易处理。也许您要做的第一件事是验证用户输入,检查用户提供的数据是否有效。验证后,所有日期格式都是相似的,只需更改分隔符即可。