コード例 #1
0
 def __sub__(self, other):
     """Перегрузка операции вычитания"""
     if isinstance(other, Cell):
         result = self._mesh_count - other._mesh_count
         if result > 0:
             return Cell(result)
         raise DmicherException(
             "Невозможно выполнить вычетание: результат меньше нуля.")
     raise DmicherException(
         "Из клетки нельзя вычитать объекты других классов.")
コード例 #2
0
 def __truediv__(self, other):
     """Перегрузка оператора честного деления"""
     if isinstance(other, Cell):
         result = self._mesh_count // other._mesh_count
         if result < 1:
             raise DmicherException(
                 "Невозможно выполнить деление: клетка окажется равной нулю."
             )
         return Cell(result)
     raise DmicherException(
         "Клетку нельзя умножить на объекты других классов.")
コード例 #3
0
ファイル: Matrix.py プロジェクト: dmicher/geekbrains_python
    def __init__(self, content: [[int]]):
        """Инициализация матрицы с содержимым"""
        if len(content) < 1 or len(content[0]) < 1:
            raise DmicherException(
                "Невозможно создать матрицу нулевого размера")

        self._rows_count = len(content)
        self._columns_count = len(content[0])

        for row in content:
            if self._columns_count != len(row):
                raise DmicherException(
                    "Создание непрямоугольной матрицы не допустимо в этом объекте. "
                    + "Убедитесь, что все строки имеют одинаковую длину.")

        self._content = content
コード例 #4
0
 def __init__(self, date_string: str):
     """Инициирует объект"""
     try:
         self.__day, self.__month, self.__year = Date._parce(date_string)
     except DmicherException as ex:
         raise DmicherException("Невозможно создать объект Date.\r\n\t" +
                                ex.txt)
コード例 #5
0
 def __init__(self, mesh_count: int):
     """Инициирует объект заданным количество ячеек
     :params mesh_count: количество ячеек, занятых клеткой"""
     if mesh_count < 1:
         raise DmicherException(
             "Невозможно создать клетку: размер меньше чем 1 ячейка.")
     self._mesh_count = mesh_count
コード例 #6
0
    def _parce(value: str):
        """Разбирает строку на значимые данные, возвращает кортеж в формате (d, m, y)"""
        parts = value.split('-')
        if len(parts) != 3:
            raise DmicherException("Неверный формат даты")

        for num in parts:
            if not num.isdigit():
                raise DmicherException("Значение [" + num +
                                       "] должно было быть числом.")

        day, month, year = [int(x) for x in parts]
        is_valid, message = Date._date_validation(day, month, year)

        if not is_valid:
            raise DmicherException("Неприемлемый формат даты. " + message)

        return (day, month, year)
コード例 #7
0
    def make_order(self, row_length: int):
        """Организует ячейки по рядам"""
        if row_length < 1:
            raise DmicherException(
                "Невозможно рассчитать ряды: размер ряда меньше 1.")

        for i in range(self._mesh_count // row_length):
            print("*" * row_length)
        print('*' * (self._mesh_count % row_length))
コード例 #8
0
ファイル: Matrix.py プロジェクト: dmicher/geekbrains_python
    def __add__(self, other):
        """Складывает две матрицы"""
        if type(other) is not Matrix:
            raise DmicherException(
                "Невозможно сложить матрицу с объектом, не являющимся матрицей"
            )

        if self._rows_count != other._rows_count or self._columns_count != other._columns_count:
            raise DmicherException(
                "Невозможно сложить матрицы. Они имеют разный размер.")

        new_content = []
        for i in range(self._rows_count):
            row = []
            for j in range(self._columns_count):
                row.append(self._content[i][j] + other._content[i][j])
            new_content.append(row)

        return Matrix(new_content)
コード例 #9
0
 def set_color_time(self, color: str, new_time: float) -> None:
     """Управляет настройками светофора: изменяет время для указанного цвета
     :params color: настраиваемый цвет: "красный", "жёлтый" или "зелёный" -> str
     :params new_time: устанавливаемое время действия цвета -> float
     """
     color = color.strip().lower()
     if color in self.__colors__:
         self.__colors__[color] = new_time
     else:
         raise DmicherException("На светофоре отсутствует указанный цвет")
コード例 #10
0
 def __mul__(self, other):
     """Перегрузка операции умножения"""
     if isinstance(other, Cell):
         return Cell(self._mesh_count * other._mesh_count)
     raise DmicherException(
         "Клетку нельзя умножить на объекты других классов.")
コード例 #11
0
 def __add__(self, other):
     """Перегрузка операции сложения"""
     if isinstance(other, Cell):
         return Cell(self._mesh_count + other._mesh_count)
     raise DmicherException(
         "К клетке нельзя прибавлять объекты других классов.")