1class LockPicker_0MI0600397:
2 def __init__(self, lock):
3 self._lock = lock
4 self._concrete_arguments = []
5
6 def unlock(self):
7 try:
8 self._lock.pick(*self._concrete_arguments)
9 return True
10 except TypeError as ex:
11 if ex.position:
12 self._concrete_arguments = [None] * ex.expected
13 else:
14 if ex.expected != type(None):
15 self._concrete_arguments[ex.position - 1] = ex.expected()
16 self.unlock()
17 except ValueError as ex:
18 self._concrete_arguments[ex.position - 1] = ex.expected
19 self.unlock()
Грешка при опит за отключване:
Traceback (most recent call last):
File "/tmp/solution.py", line 8, in unlock
self._lock.pick(*self._concrete_arguments)
File "/tmp/test.py", line 50, in pick
raise LockTypeError("This is a different kind of lock.",
test.LockTypeError: This is a different kind of lock.
During handling of the above exception, another exception occurred:
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 15, in unlock
self._concrete_arguments[ex.position - 1] = ex.expected()
^^^^^^^^^^^^^
TypeError: 'int' object is not callable
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)
Даниел Стефанов
13.11.2024 21:22Благодаря!!!!!
|
Даниел Стефанов
13.11.2024 21:21Добре 🤣
|
Виктор Бечев
13.11.2024 21:16Само че трябваше да размениш условията, решавайки да използваш подходът, който ти предложих (`if ex.position == None` е обратното на `if ex.position`, демек блоковете в `if`-а и `else`-а трябва да се завъртят). Понеже се чувствам сякаш съм те подвел - получаваш точка.
На мен да ми е урок да уточнявам, че кодът, който цитирам, не винаги е за директна употреба, а ти ще си видиш точките утре - да ти е за урок, че кодът, който цитирам, не винаги е за директна употреба. :smile:
|
Виктор Бечев
13.11.2024 15:31Не, рекурсията не е проблем, стига алгоритъмът да работи за под 1 секунда.
|
Даниел Стефанов
13.11.2024 12:49Използването на рекурсия чупи ли тази част от условието, защото метода се извиква повече от веднъж: Класът ви трябва да има публичен метод unlock, който да отключва ключалката при едно извикване, т.е. от първия път.
|
f | 1 | class LockPicker_0MI0600397: | f | 1 | class LockPicker_0MI0600397: |
2 | def __init__(self, lock): | 2 | def __init__(self, lock): | ||
3 | self._lock = lock | 3 | self._lock = lock | ||
4 | self._concrete_arguments = [] | 4 | self._concrete_arguments = [] | ||
5 | 5 | ||||
6 | def unlock(self): | 6 | def unlock(self): | ||
7 | try: | 7 | try: | ||
8 | self._lock.pick(*self._concrete_arguments) | 8 | self._lock.pick(*self._concrete_arguments) | ||
9 | return True | 9 | return True | ||
10 | except TypeError as ex: | 10 | except TypeError as ex: | ||
n | 11 | if ex.position == None: | n | 11 | if ex.position: |
12 | self._concrete_arguments = [None] * ex.expected | 12 | self._concrete_arguments = [None] * ex.expected | ||
13 | else: | 13 | else: | ||
14 | if ex.expected != type(None): | 14 | if ex.expected != type(None): | ||
t | 15 | self._concrete_arguments[ex.position-1] = ex.expected() | t | 15 | self._concrete_arguments[ex.position - 1] = ex.expected() |
16 | self.unlock() | 16 | self.unlock() | ||
17 | except ValueError as ex: | 17 | except ValueError as ex: | ||
18 | self._concrete_arguments[ex.position - 1] = ex.expected | 18 | self._concrete_arguments[ex.position - 1] = ex.expected | ||
19 | self.unlock() | 19 | self.unlock() |
Legends | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|