【问题描述】
编写一个程序,输入两个矩阵AN×N与BN×N(2≤N≤10)进行如下运算:
1.加
2.减
3.乘
【输入形式】
标准输入上依次输入以下内容:
4.输入第一个矩阵AN×N。形式是N个输入行,每行有分别N个整数(可能为负数),代表矩阵AN×N的所有元素。各整数之间以一个或多个空格分隔。
5.输入运算符,是一个字符,可以是"+"、"-"、"*",分别代表加、减、乘三种操作。
6.输入第二个矩阵BN×N。形式与AN×N相同。
7.以空行表示所有输入的结束。
【输出形式】
在标准输出上打印运算结果,同样是输出N行,每行分别输出该行的N个元素。每个整数占据5个字符宽度(包括负号),向右对齐,不足部分补以空格。
【样例输入】
(下图中"#"代表一个空格)
5##7#12
3###-15# 4
2#6#7
+
41#8#9
7#6#12
2#4#6
【样例输出】
##46##15##21
##10##-9##16
###4##10##13
【样例说明】
输入的A和B分别是两个三阶矩阵,要求进行加法运算,结果如上例所示。
【代码】
import numpy
a, b, c = [], [], []
t = 0
def add():
for i in range(0, t):
for j in range(0, t):
sum = a[i][j] + b[i][j]
print('%5d' % sum, end='')
print()
def sub():
for i in range(0, t):
for j in range(0, t):
sum = a[i][j] - b[i][j]
print('%5d' % sum, end='')
print()
def multi():
t1 = numpy.array(a)
t2 = numpy.array(b)
res = numpy.dot(t1, t2)
for i in range(0, t):
for j in range(0, t):
print('%5d' % res[i][j], end='')
print()
if __name__ == '__main__':
while True:
s = input().split()
if s[0] == '+' or s[0] == '-' or s[0] == '*':
op = s[0]
break
s = [int(x) for x in s]
a.append(s)
t += 1
for i in range(0, t):
s = input().split()
s = [int(x) for x in s]
b.append(s)
# print(a)
# print(b)
if op == '+':
add()
if op == '-':
sub()
if op == '*':
multi()