Проверка возраста Python3 18+ - PullRequest
1 голос
/ 01 апреля 2020

Мне нужна программа на 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"```

1 Ответ

0 голосов
/ 01 апреля 2020

Ваша попытка была хорошим началом, но вы перепутали strftime с strptime; изменить это.

Может быть, иметь дело с этим с помощью регулярных выражений?

Это не рекомендуется. После вышеуказанного изменения мы можем использовать результат вашей функции try_parsing_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+")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...