From 3924faba024372e52d9d5bb083ddb9b035f6b188 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Mon, 27 Sep 2021 12:25:44 +0300 Subject: [PATCH] HW_8 --- T8_1.py | 16 ++++++++++++++++ T8_3.py | 22 ++++++++++++++++++++++ T8_4.py | 23 +++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 T8_1.py create mode 100644 T8_3.py create mode 100644 T8_4.py diff --git a/T8_1.py b/T8_1.py new file mode 100644 index 0000000..e6aae73 --- /dev/null +++ b/T8_1.py @@ -0,0 +1,16 @@ +import re + + +def email_parse(email): + + try: + username = re.compile(r'^(\w+)@(\w+.\w+)') + domain = re.compile(r'@(\w+.\w+)') + + return {'username': username.findall(email)[0], 'domain': username.findall(email)[1]} + + except ValueError: + print(f"wrong email: {email}") + + +print(email_parse('sdbb@mail.ru')) diff --git a/T8_3.py b/T8_3.py new file mode 100644 index 0000000..4453f43 --- /dev/null +++ b/T8_3.py @@ -0,0 +1,22 @@ +from functools import wraps + + +def type_logger(func): + + @wraps(func) + def wrapper(*args, **kwargs): + my_list = [el for el in (*args, *kwargs.values())] + n = [f'{func.__name__}({el}: {type(el)})' for el in my_list] + print(*n) + return wrapper + + +@type_logger +def calc_cube(*x, **y): + my_list = [el for el in (*x, *y.values()) if type(el) == int or type(el) == float] + return [el ** 3 for el in my_list] + + +calc_cube(5, 5.8, first='1') + + diff --git a/T8_4.py b/T8_4.py new file mode 100644 index 0000000..c3546a1 --- /dev/null +++ b/T8_4.py @@ -0,0 +1,23 @@ +from functools import wraps + + +def val_checker_l(lambda_func): + def val_checker(func): + + @wraps(func) + def wrapper(x): + if lambda_func(x): + print(func(x)) + else: + raise ValueError(f'wrong value {x}') + + return wrapper + + return val_checker + + +@val_checker_l(lambda x: x > 0) +def calc_cube(x): + return x ** 3 + +calc_cube(5) \ No newline at end of file