Откуда появляются два дополнительных переноса строки? Решил я попрактиковаться в ООП.class Matrix(object):
def __init__(self,x,y,content):
''' x - height,
y - width,
content - two-dimensional array
Example: matrix = Matrix(3,2,
[ [1,2],
[3,4],
[5,6] ])'''
if len(content) == x:self.height = x
else:raise ValueError("Different height")
for i in range(self.height):
if len(content[i]) != y:raise ValueError("Different width")
self.width = y
self.content = content
def __repr__(self):
out = ''
for i in range(self.height):
out += ' '.join(map(str,self.content[i]))
out += '\n'
return out

def mul_on_num(self, number):
''' return Matrix object'''
ctx =[[number * self.content[i][j] for j in range(self.width)] for i in range(self.height)]
return Matrix(self.height,self.width,ctx)
def __add__(self, matrix):
if matrix.width != self.width or matrix.height != self.height:
raise ValueError("Different sizes of the matrix")
ctx =[[matrix.content[i][j] + self.content[i][j] for j in range(self.width)] for i in range(self.height)]
return Matrix(self.height,self.width,ctx)
def __mul__(self,matrix):

if self.width == matrix.height:
n = self.width;mode = 0
elif matrix.width == self.height:
n = matrix.width;mode = 1
else:
raise ValueError("Different size")
if mode:
c = [[0 for i in range(self.width)] for j in range(matrix.height)]
for i in range(matrix.height):
for j in range(self.width):
for k in range(n):
c[i][j] += matrix.content[i][k]*self.content[k][j]
return Matrix(matrix.height, self.width, c)
else:
c = [ [0 for i in range(matrix.width)] for j in range(self.height)]
for i in range(self.height):
for j in range(matrix.width):
for k in range(n):
c[i][j] += self.content[i][k] * matrix.content[k][j]
return Matrix(self.height,matrix.width, c)
Возможно, что-то делаю не так, но почему при вызове такого скрипта:from main import Matrix
m = Matrix(2,2,[ [2,2],[2,2] ])
s = Matrix(2,2,[ [2,2],[2,2] ])
print('\n'*10)
k = s*m
print(k)
Получается так вывод:8 8
8 8
.
.
Вместо точки \n
В самом конце появляются два \n
Я еще пытался использовать __str__, но при вызове m = Matrix(2,2,[ [2,2],[2,2] ]) у меня печаталсь матрица 2 2
2 2
.
.
Можно ли тут что-то улучшить (в плане архитектуры, красоты кода)?

21 Авг 2019 в 06:59
169 +1
1
Ответы
Нет ответов
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир