| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | 
def raise_1():    try:        # {}['k'] # ошибка key error        [1, 2, 3][14] # ошибка index error    except (KeyError, IndexError) as error:        print(f'Logging error: {repr(error)}')        raise TypeError("raise TypeError!!!") from None    except ZeroDivisionError as err:        print('ZeroDevisionError')        print(f'Logging error: {err} {repr(err)}')        def raise_2():    a = TypeError("Ошибка типа")    print(a.args)    raise adef raise_3():    try:        raise ValueError('ошибка значения')    except ValueError as first:        try:            raise TypeError('ошибка типа')        except TypeError as second:            raise Exception('Большое исключение') from first# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~def function_1():    try:        x = 1/0        print('The end')    except ZeroDivisionError:        print("Can't divide by zero")        raise ValueError("Oops, something went wrong")    def function_2():    try:        function_1()    except ValueError as e:        print("ValueError cauth:", e)# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class Customer:    def __init__(self, name, balance=0):        self.name = name        self.balance= balance    @staticmethod    def check_type(value):        if not isinstance(value, (int, float)):            raise TypeError('Банк работает только с числами')    def withdraw(self, value):        Customer.check_type(value)        if self.balance < value:            raise ValueError('Сумма списания превышает баланс')        else:            self.balance -= value    def deposit(self, value):        Customer.check_type(value)        self.balance += value# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~def sum_numbers(numbers: list[int]):    if not isinstance(numbers, list):        raise TypeError("Аргумент numbers должен быть списком")    if not numbers:        raise ValueError("Пустой список")    for elem in numbers:        if not isinstance(elem, (int, float)):            raise TypeError('Неправильный тип элемента')    return sum(numbers)def main():    for value in (True, (1, 2, 3), {1: 'hello'}, {1, 2, 3}):        try:            result = sum_numbers(value)        except TypeError as error:            print(error)    try:        result = sum_numbers([])    except ValueError as error:        print(error)    try:        sum_numbers([1, 'hello', 2, 3])    except TypeError as error:        print(error)    try:        sum_numbers([1, 2, 3, 4, 5, [1, 2, 3]])    except TypeError as error:        print(error)    try:        sum_numbers([1, 2, 3, 4, 5, {1, 2, 3}])    except TypeError as error:        print(error)    try:        sum_numbers([1, 2, 3, 4, 5, (1, 2, 3)])    except TypeError as error:        print(error)    assert sum_numbers([1, 2, 3, 4, 5]) == 15    assert sum_numbers([1, 2, 3, 4, 5.0]) == 15.0    # raise_1()    # raise_2()    # raise_3()    # function_2()    # cus = Customer('user, 110')    # cus.check_type()    # my_list = [1, 2, 'asfadsf']    # empty_list = []    # sum_numbers(my_list)    # sum_numbers(empty_list)    '''    assert Customer.check_type(2) is None, 'Метод check_type не должен ничего возращать'    assert Customer.check_type(2.5) is None, 'Метод check_type не должен ничего возращать'    for i in ['hello', [1, 2, 3], dict(), set()]:        try:            Customer.check_type(i)        except TypeError as error:            print(error)        else:            raise TypeError(f'Метод check_type должен вызывать ошибку если передать {i}')    bob = Customer('Bob Odenkirk')    assert bob.balance == 0    assert bob.name == 'Bob Odenkirk'    try:        bob.deposit('hello')    except TypeError as error:        print(error)    else:        raise ValueError("Нельзя вносить на счет баланса строку")    try:        bob.deposit([])    except TypeError as error:        print(error)    else:        raise ValueError("Нельзя вносить на счет баланса список")    bob.deposit(200)    assert bob.balance == 200    try:        bob.withdraw(300)    except ValueError as e:        print(e)    else:        raise ValueError("Проверьте списание при превышении лимита")    bob.withdraw(150)    assert bob.balance == 50    terk = Customer('Terk', 1000)    assert terk.name == 'Terk'    assert terk.balance == 1000    terk.withdraw(999)    assert terk.balance == 1, 'Не списались деньги, проверяйте списание'    terk.withdraw(1)    assert terk.balance == 0, 'Не списались деньги, проверяйте списание'    try:        terk.withdraw(1)    except ValueError as e:        print(e)    else:        raise ValueError("Проверьте списание при превышении лимита")    assert terk.balance == 0    '''if __name__ == '__main__':    main()
 |