Лабораторная работа 2. Исключения
1. Создайте класс BankAccount
, который управляет балансом пользователя. Реализуйте метод withdraw(amount)
, который уменьшает баланс на amount
. Если баланс станет отрицательным, выбрасывайте ValueError
. Добавьте механизм блокировки аккаунта: если трижды подряд попытаться снять больше, чем есть на балансе, аккаунт блокируется и выбрасывается исключение AccountLockedError
.
2. Реализуйте класс Calculator
, который выполняет базовые арифметические операции (+
, -
, *
, /
). Добавьте обработку следующих ошибок:
- Деление на ноль (
ZeroDivisionError
). - Если переданы нечисловые аргументы (
TypeError
). - Если передана неизвестная операция (
UnknownOperationError
).
3. Реализуйте класс TicketSystem
, который управляет бронированием билетов. У каждого билета есть номер и статус (доступен или забронирован).
Реализуйте метод book_ticket(ticket_id)
, который бронирует билет.
Если билет уже забронирован, выбросите исключение TicketAlreadyBookedError
.
Если билет с таким ID не существует, выбросите TicketNotFoundError
.
4. Создайте класс UserManager
, который управляет пользователями.
Реализуйте метод add_user(username, age)
, который добавляет пользователя в систему.
Метод должен выбрасывать исключения:
InvalidUsernameError
, если имя содержит запрещенные символы (@, #, $, %, &
).AgeRestrictionError
, если возраст меньше 18 лет.UserAlreadyExistsError
, если пользователь уже добавлен.