Предизвикателства > Разбий ни ключалката > Решения > Решението на Станислава Желязкова

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

0 точки общо

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

 1class LockPicker_4MI0600199:
 2    def __init__(self, lock):
 3        self.lock = lock
 4        self.attempts = []
 5
 6    def unlock(self):
 7        args = []
 8
 9        while True:
10            try:
11                self.lock.pick(*args)
12                self.attempts.append(args.copy())
13                return  
14            except TypeError as e:
15                if e.position is None:
16                    args = [None] * e.expected
17                else: 
18                    args[e.position - 1] = self._get_default_value(e.expected)
19            except ValueError as e:
20                args[e.position - 1] = e.expected
21
22    def _get_default_value(self, expected_type):
23        if expected_type is int:
24            return 0
25        elif expected_type is str:
26            return ''
27        elif expected_type is float:
28            return 0.0
29        elif expected_type is list:
30            return []
31        elif expected_type is dict:
32            return {}
33        elif expected_type is bool:
34            return False
35        else:
36            return None

Грешка при опит за отключване:
Traceback (most recent call last):
File "/tmp/test.py", line 98, in <module>
test_unlocker(LockPicker(lock))
File "/usr/local/lib/python3.12/dist-packages/timeout_decorator/timeout_decorator.py", line 82, in new_function
return function(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/test.py", line 77, in test_unlocker
unlocker.unlock()
File "/tmp/solution.py", line 11, in unlock
self.lock.pick(*args)
File "/tmp/test.py", line 55, in pick
raise LockTypeError("You shall not pass!", position, type(slot))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/timeout_decorator/timeout_decorator.py", line 69, in handler
_raise_exception(timeout_exception, exception_message)
File "/usr/local/lib/python3.12/dist-packages/timeout_decorator/timeout_decorator.py", line 45, in _raise_exception
raise exception()
timeout_decorator.timeout_decorator.TimeoutError: 'Timed Out'

F
======================================================================
FAIL: test_picking (test.TestLockPicker.test_picking)
Ensure the lock is picked based on already stored boolean var.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 72, in test_picking
self.assertTrue(correct, "Не успя да отключиш.")
AssertionError: False is not true : Не успя да отключиш.

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

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