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

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

1 точки общо

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

 1memory = {}
 2def memnick(*args):
 3    if not args:
 4        def decorator(func):
 5            def memorize(*args, **kwargs):
 6                sentence = func(*args, **kwargs)
 7                for_who = sentence.split(",")[0].lower()
 8                memory.setdefault(for_who, set()).add((func.__name__.replace("_", " "), sentence))
 9                return sentence
10            memorize.__name__ = func.__name__ 
11            return memorize
12        return decorator
13    result = []
14    for arg in args:
15        name = arg.__name__
16        for speaker, sentence in memory.get(name, []):
17            result.append(f"С гласа на {speaker.title()}: {sentence}")
18    return result

..F.F
======================================================================
FAIL: test_memnick_memorizes (test.TestMemnick.test_memnick_memorizes)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 51, in test_memnick_memorizes
self.assertEqual(
~~~~~~~~~~~~~~~~^
[
^
...<5 lines>...
solution.memnick(божана, емил),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
AssertionError: Lists differ: ['С гласа на Лазар: Божана, може би ще те любя.', 'С г[166 chars]ах!'] != ['С гласа на Почекаин: Божана, ще те любя.', 'С гласа [166 chars]ах!']

First differing element 0:
'С гласа на Лазар: Божана, може би ще те любя.'
'С гласа на Почекаин: Божана, ще те любя.'

- ['С гласа на Лазар: Божана, може би ще те любя.',
? ^ ^^^ --------

+ ['С гласа на Почекаин: Божана, ще те любя.',
? ^^^^^ ^^

+ 'С гласа на Лазар: Божана, може би ще те любя.',
'С гласа на Митака: Божана, на този етап не съм сигурен дали искам да те '
'любя.',
- 'С гласа на Почекаин: Божана, ще те любя.',
'С гласа на Бай Венци: Емил, айде да играем шах!']

======================================================================
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.003s

FAILED (failures=2)

Дискусия
Коста Илев
15.03.2026 23:15

Благодаря за обратната връзка
Виктор Бечев
15.03.2026 21:19

Първият не минава защото не си запазил подредбата на извикване (използвайки `set` я губиш). Вторият - защото не пазиш имената от повече от една дума консистентно: ``` memory = {} def memnick(*args): if not args: def decorator(func): def memorize(*args, **kwargs): sentence = func(*args, **kwargs) for_who = sentence.split(",")[0].lower() memory.setdefault(for_who, set()).add((func.__name__.replace("_", " "), sentence)) return sentence memorize.__name__ = func.__name__ return memorize return decorator result = [] for arg in args: name = arg.__name__ print(name) # бай_венци print(memory) # {'бай венци': {('емил', 'Бай Венци, кажи ми за рисунката.')}} for speaker, sentence in memory.get(name, []): result.append(f"С гласа на {speaker.title()}: {sentence}") return result @memnick() def емил(): return "Бай Венци, кажи ми за рисунката." емил() @memnick() def бай_венци(): return "Емил, айде да играем шах!" print(memnick(бай_венци)) # [] ```
Коста Илев
15.03.2026 15:25

Извинете може ли да ви попитам защо тестовете не минават, че гледам логовете ама не мога де се ориентирам защо не ги харесва
История

f1memory = {}f1memory = {}
2def memnick(*args):2def memnick(*args):
3    if not args:3    if not args:
4        def decorator(func):4        def decorator(func):
5            def memorize(*args, **kwargs):5            def memorize(*args, **kwargs):
6                sentence = func(*args, **kwargs)6                sentence = func(*args, **kwargs)
7                for_who = sentence.split(",")[0].lower()7                for_who = sentence.split(",")[0].lower()
n8                memory.setdefault(for_who, list()).append((func.__name__.replace("_", " "), sentence))n8                memory.setdefault(for_who, set()).add((func.__name__.replace("_", " "), sentence))
9                return sentence9                return sentence
10            memorize.__name__ = func.__name__ 10            memorize.__name__ = func.__name__ 
11            return memorize11            return memorize
12        return decorator12        return decorator
13    result = []13    result = []
14    for arg in args:14    for arg in args:
15        name = arg.__name__15        name = arg.__name__
16        for speaker, sentence in memory.get(name, []):16        for speaker, sentence in memory.get(name, []):
17            result.append(f"С гласа на {speaker.title()}: {sentence}")17            result.append(f"С гласа на {speaker.title()}: {sentence}")
18    return result18    return result
t19 t
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op