-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path07-hw-01-2.py
40 lines (32 loc) · 2.11 KB
/
07-hw-01-2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 1) Реализовать класс Matrix (матрица). Обеспечить перегрузку конструктора класса (метод
# __init__() ), который должен принимать данные (список списков) для формирования матрицы.
# Подсказка: матрица — система некоторых математических величин, расположенных в виде
# прямоугольной схемы.
# Примеры матриц: 3 на 2, 3 на 3, 2 на 4.
# 31 22 | 3 5 32 | 3 5 8 3
# 37 43 | 2 4 6 | 8 3 7 1
# 51 86 | -1 64 -8 |
# Следующий шаг — реализовать перегрузку метода __str__() для вывода матрицы в
# привычном виде.
# Далее реализовать перегрузку метода __add__() для реализации операции сложения двух
# объектов класса Matrix (двух матриц). Результатом сложения должна быть новая матрица.
# Подсказка: сложение элементов матриц выполнять поэлементно — первый элемент первой
# строки первой матрицы складываем с первым элементом первой строки второй матрицы и т.д.
# [[31, 22], [37, 43], [51, 86]]
class Matrix:
def __init__(self, matrix):
self.matrix = matrix
def __str__(self):
return '\n'.join([''.join(['%d\t' % i for i in row]) for row in self.matrix])
def __add__(self, matrix2):
m_sum = [[self.matrix[i][j] + matrix2.matrix[i][j] for j, item in enumerate(matrix)] for i, matrix in
enumerate(self.matrix)]
return Matrix(m_sum)
m_list1 = [[11, 22], [33, 44], [55, 66]]
m_list2 = [[66, 55], [44, 33], [22, 11]]
mm1 = Matrix(m_list1)
mm2 = Matrix(m_list2)
print(mm1, '\n')
print(mm2, '\n')
# mm.__str__()
print(mm1 + mm2)