| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | 
class MyException(Exception):    """this is my excpetion"""        def __init__(self, *args):        if args:            self.massage = args[0]        else:            self.message = None    def __str__(self):        print('str called')        if self.message:            return f"MyException {self.message}"        else:            return "MyException is empty"# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class SnakeExceptionBase(Exception):    """Основной класс ошибок змейки"""    passclass SnakeBorderException(SnakeExceptionBase):    """Ошибка соприкосновения змеи со стенкой"""    passclass SnakeTailException(SnakeBorderException):    """Соприкосновение змеи и тела"""    pass# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class UserNotFoundError(Exception):    passusers = {        "alice": {"name": "Alice Smith", "email": "alice@example.com"},        "bob": {"name": "Bob Johnson", "email": "bob@example.com"},        "jack": {"name": "Jack Wild", "email": "jack_wild@example.com"}    }def get_user(username):    if username not in users.keys():        raise UserNotFoundError("User not found")    return users[username]['name']def get_user_test():    try:        username = get_user('bob')    except UserNotFoundError as e:        print(e)    else:        print(username)# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class NegativeDepositError(Exception):    passclass InsufficientFundsError(Exception):    passclass BankAccount:    def __init__(self, balance):        self.balance = balance    def deposit(self, value):        if value < 0:            raise NegativeDepositError("Нельзя пополнить счет отрицательным значением")        self.balance += value            def withdraw(self, value):        if value > self.balance:            raise InsufficientFundsError("Недостаточно средств для снятия")        self.balance -= value# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class PasswordInvalidError(Exception):    passclass PasswordLengthError(PasswordInvalidError):    passclass PasswordContainUpperError(PasswordInvalidError):    passclass PasswordContainDigitError(PasswordInvalidError):    passclass User:    def __init__(self, username, password=None):        self.username = username        self.password = password    def set_password(self, value):        up_str = ''        digit_str = ''        if len(value) < 8:            raise PasswordLengthError("Пароль должен быть не менее 8 символов")                for sim in value:            if sim.isupper():                up_str += sim            if sim.isdigit():                digit_str += sim        if not up_str:            raise PasswordContainUpperError('Пароль должен содержать хотя бы одну заглавную букву')        if not digit_str:            raise PasswordContainDigitError('Пароль должен содержать хотя бы одну цифру')        self.password = value# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~def func_1():    # raise MyException('asdf', 1, 2, 3)    raise MyException()    # try:    #     raise MyException('asdf', 1, 2, 3)    # except MyException:    #     print('done')# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~def main():    # get_user_test()    # func_1()    assert issubclass(PasswordInvalidError, Exception)    assert issubclass(PasswordLengthError, PasswordInvalidError)    assert issubclass(PasswordContainUpperError, PasswordInvalidError)    assert issubclass(PasswordContainDigitError, PasswordInvalidError)       user = User("johndoe")    try:        user.set_password("weakpwd")    except PasswordLengthError as e:        print(e)    try:        user.set_password("strongpassword8")    except PasswordContainUpperError as e:        print(e)    try:        user.set_password("Safepassword")    except PasswordContainDigitError as e:        print(e)    user.set_password("SecurePass123")    assert user.password == 'SecurePass123'if __name__ == "__main__":    main()
 |