1class LockPicker_3MI0600342:
2 def __init__(self, lock):
3 self.lock = lock
4
5 def unlock(self):
6 args = []
7 while True:
8 try:
9 if self.lock.pick(*args):
10 break
11 except Exception as ex:
12 if ex.position is None:
13 args = [None] * ex.expected
14 elif isinstance(ex.expected, type):
15 args[ex.position - 1] = ex.expected()
16 else:
17 args[ex.position - 1] = ex.expected
Резултат от контролното:
18/25 верни отговора.
15 точки.
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Георги Кунчев
13.11.2024 13:39Не че ще тестваме с такова нещо, но тъй като ми направи впечатление, ще кажа. Поради факта, че не хващаш конкретен тип изключения, а се осланяш на типа на `ex.expected`, има възможност да сгрешиш. Може някой от аргументите, които ключалката ни очаква, да е от тип `type` Например `str`. В такъв случай `isinstance(ex.expected, type)` би ти дал неочакван резултат.
За тази конкретна задача, не можем да си позволим да тестваме с типове, защото би било гадно да ги инстанцирате, така че решението ти е валидно, но бих предпочел да хвана конкретните грешки поотделно, за да е сигурно с какво работя.
|