АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

2194. Ошибки и транспонирование

Ограничение времени: 1 сек.
Ограничение памяти:262144 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил debug

Добавьте в программу из предыдущей задачи класс MatrixError, содержащий внутри self поля matrix1 и matrix2 – ссылки на матрицы.

В класс Matrix внесите следующие изменения:

  • Добавьте в метод __add__ проверку на ошибки в размере входных данных, чтобы при попытке сложить матрицы разных размеров было выброшено исключение MatrixError таким образом, чтобы matrix1 поле MatrixError стало первым аргументом __add__ (просто self), а matrix2 — вторым (второй операнд для сложения).
  • Реализуйте метод transpose, транспонирующий матрицу и возвращающую результат (данный метод модифицирует экземпляр класса Matrix)
  • Реализуйте статический метод transposed, принимающий Matrix и возвращающий транспонированную матрицу.

Пример статического метода:

class D(object):  
@staticmethod
def test(x):
return x == 0
...
>>> D.test(1) # доступ к статическому методу можно получать и через класс
False
>>> f = D()
>>> f.test(0) # и через экземпляр класса
True

Примеры

Входные данные
# Task 3 check 1
# Check exception to add method
m1 = Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
m2 = Matrix([[0, 1, 0], [20, 0, -1], [-1, -2, 0]])
print(m1 + m2)

m2 = Matrix([[0, 1, 0], [20, 0, -1]])
try:
    m = m1 + m2
    print('WA\n' + str(m))
except MatrixError as e:
    print(e.matrix1)
    print(e.matrix2)
Выходные данные
1	1	0
20	1	-1
-1	-2	1
1	0	0
0	1	0
0	0	1
0	1	0
20	0	-1
Входные данные
# Task 3 check 2
m = Matrix([[10, 10], [0, 0], [1, 1]])
print(m)
m1 = m.transpose()
print(m)
print(m1)
Выходные данные
10	10
0	0
1	1
10	0	1
10	0	1
10	0	1
10	0	1
Входные данные
# Task 3 check 3
m = Matrix([[10, 10], [0, 0], [1, 1]])
print(m)
print(Matrix.transposed(m))
print(m)
Выходные данные
10	10
0	0
1	1
10	0	1
10	0	1
10	10
0	0
1	1

Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи по темам / Python / ООП в Python /
2193. B - Добавить и умножить 2194. 2195. D - Умножение 2196. E - Наследование 2197. X - Линейная алгебра
 
время генерации 0.093 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.