Предизвикателства > Мемник > Решения > Решението на Александър Ангелов

Резултати
2 точки от тестове
0 точки от учител

2 точки общо

5 успешни теста
0 неуспешни теста
Код
Скрий всички коментари

 1saved_convos = {}
 2
 3def format_caller(caller):
 4    return "С гласа на " + caller.replace('_', ' ').title() + ":"
 5
 6def memnick(*args):
 7    def decorator(func):
 8        def wrapper(*w_args, **w_kwargs):
 9            func_res = func(*w_args, **w_kwargs)
10            caller = func.__name__
11            addressed_person, _ = func_res.split(',', 1)
12            addressed_person = addressed_person.lower().replace(' ', '_')
13            if addressed_person not in saved_convos:
14                saved_convos[addressed_person] = []
15            if (caller, func_res) not in saved_convos[addressed_person]:
16                saved_convos.get(addressed_person).append((caller, func_res))
17            wrapper.__name__ = func.__name__
18            return func_res
19        return wrapper
20
21    if not args:
22        return decorator
23
24    result = []
25    for function in args:
26        called = saved_convos.get(function.__name__,[])
27        for caller, text in called:
28            result.append(format_caller(caller) + " " + text)
29
30    return result

.....
----------------------------------------------------------------------
Ran 5 tests in 0.001s

OK

Дискусия
История
Това решение има само една версия.