ООП · 2 из 23
Кодовый замок
На каждой стойке проката — кодовый замок: набрал верный код — открылся. Механик Олег хочет, чтобы угадать код перебором было нельзя: три неверных набора подряд — и замок блокируется до прихода механика.
Что сделать
Опишите кодовый замок: он помнит, открыт ли он, и блокируется после трёх неверных наборов подряд.
Что приходит
kod— верный код, строка из цифр, например"0427"
Что должен уметь
Поля otkryt, oshibok и zablokirovan; метод vvesti(nabor) — True, если замок открылся, иначе False; метод zakryt().
Допишите класс Zamok в редакторе справа.
Проверка создаёт его объекты и зовёт методы — то, что напечатано,
на проверку не влияет.
Замок с кодом "1234": набрали "0000" — не открылся, неверных подряд одна. Набрали "1234" — открылся, счёт неверных сбросился: поля (True, 0, False).
z = Zamok("1234")
z.vvesti("0000")
z.vvesti("1234")
(z.otkryt, z.oshibok, z.zablokirovan)
(True, 0, False)
Zamok(kod) — новый замок: закрыт (otkryt — False), неверных наборов подряд — oshibok = 0, не заблокирован (zablokirovan — False).
vvesti(nabor):
- замок заблокирован — ничего не меняется, ответ
False, даже если код верный; - набор совпал с кодом — замок открывается,
oshibokстановится 0, ответTrue; - не совпал —
oshibokрастёт на один, и на третьем неверном подряд замок блокируется; ответFalse. Открытый замок неверный набор не закрывает.
zakryt() — замок закрывается (otkryt — False).
Код и набор — строки: "0427" и "427" — разные коды.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.