Предизвикателства > Пазарски списъци > Решения > Решението на Стефан Краев

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

2 точки общо

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

 1memory = {} #"глобален" речник за съхранение на изхода
 2
 3def func_name_normalization(func_name): #някаква_дума -> Някаква Дума
 4    func_name = func_name.split("_")
 5    func_name = " ".join(part.capitalize() for part in func_name)
 6    return func_name
 7
 8def memnick(*args):
 9    if len(args) == 0:
10        def decorator(func):
11            def statement(*args, **kwargs): #по условие може да приема всичко
12                sentence = func(*args, **kwargs)
13
14                sentence_parts = sentence.split(", ", 1)
15                name_addressed = sentence_parts[0].lower()#гарантира че няма да имаме проблеми с разминаване в регистрите
16                                                          #при ключовете в речника
17                speaker = func_name_normalization(func.__name__)
18                modified_sentence = "С гласа на {}: {}".format(speaker, sentence)
19
20                if name_addressed not in memory:
21                    memory[name_addressed] = []
22                
23                if modified_sentence not in memory[name_addressed]:#гарантира уникалност на стойностите по условие
24                    memory[name_addressed].append(modified_sentence)
25
26                return sentence
27            
28            statement.__name__ = func.__name__ #Гарантираме че името на върнатата функция съвпада с подадената такава
29
30            return statement
31        return decorator
32        
33    else:
34        all_phrases = []
35        for func in args:
36            normalized_argument_name = func.__name__.lower() #line 15
37            if normalized_argument_name in memory:
38                all_phrases.extend(memory[normalized_argument_name])
39        return all_phrases

....F
======================================================================
FAIL: test_memnick_splits_properly (test.TestMemnick.test_memnick_splits_properly)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 89, in test_memnick_splits_properly
self.assertEqual(
~~~~~~~~~~~~~~~~^
["С гласа на Емил: Бай Венци, кажи ми за рисунката."],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
solution.memnick(бай_венци),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
AssertionError: Lists differ: ['С гласа на Емил: Бай Венци, кажи ми за рисунката.'] != []

First list contains 1 additional elements.
First extra element 0:
'С гласа на Емил: Бай Венци, кажи ми за рисунката.'

- ['С гласа на Емил: Бай Венци, кажи ми за рисунката.']
+ []

----------------------------------------------------------------------
Ran 5 tests in 0.002s

FAILED (failures=1)

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