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)` би ти дал неочакван резултат.  
За тази конкретна задача, не можем да си позволим да тестваме с типове, защото би било гадно да ги инстанцирате, така че решението ти е валидно, но бих предпочел да хвана конкретните грешки поотделно, за да е сигурно с какво работя. |