利用python自己编写函数计算由用户输入的两个3*3矩阵的加法和乘法 您所在的位置:网站首页 python3**2**3的值 利用python自己编写函数计算由用户输入的两个3*3矩阵的加法和乘法

利用python自己编写函数计算由用户输入的两个3*3矩阵的加法和乘法

#利用python自己编写函数计算由用户输入的两个3*3矩阵的加法和乘法| 来源: 网络整理| 查看: 265

1.解法思路

利用python计算,首先要面对输入的问题。python不像java和c++这类编程语言,在输入变量之前会定义变量的类型,因此可以在一行输入多个整数,而python读取一行多个数字只能通过先读取成字符串,可以利用split方法进行切割将数保存至列表中。

3*3矩阵的输入在这里我想的是首先将第每行的3个数字以字符串的形式保存,然后根据空格分割存入一个列表中,最后将这3个列表放在一个列表里,构成一个3*3的矩阵。但是要注意,在这里分割保存的类型是字符类型,因此在后面进行运算的时候要注意不能直接运算,需要将字符转化整型数字,可以直接通过ord函数将字符转化为对应的ASCII码减去48。

加法的话就是按一行行计算A[i][j]+B[i][j]

乘法的话稍稍复杂一点,由于在计算[1][1]的时候需要A行不变,每一列与B的行相加,B的列不变,利用三层循环,计算A[i][k]+B[k][j]

2.完整代码 def add(A,B): C=[] for i in range(0,3): temp=[] for j in range(0,3): temp.append(ord(A[i][j])+ord(B[i][j])-96) C.append(temp) return C def mul(A,B): D=[] for i in range(0,3): temp=[] for j in range(0,3): result=0 for k in range(0,3): result+=(ord(A[i][k])-48)*(ord(B[k][j])-48) temp.append(result) D.append(temp) return D if __name__=="__main__": print("请输入矩阵A") A=[] for i in range(0,3): temp=[] s=input() temp=s.split(' ') A.append(temp) print("请输入矩阵B") B=[] for i in range(0,3): temp=[] s=input() temp=s.split(' ') B.append(temp) print(add(A,B)) print(mul(A,B)) 3.输出结果

 4.优化

上述只考虑到十以内的数字进行计算,如果超出了个位数的数字则无法计算。只需要修改字符串转数字的思路即可。

上述的转化思路是将单个数字字符转化为数字,通过ord函数将单个字符转化成对应的ASCII码减去0对应的ASCII码。其实int、long函数能直接将一个字符串转化为数字,根据数据的范围可以自行选择用哪个,数据小用int,数据大用long。

把ord(A[i][j])+ord(B[i][j])-96 修改成  int(A[i][j])+int(B[i][j])

把(ord(A[i][k])-48)*(ord(B[k][j])-48) 修改成 int(A[i][j])*int(B[i][j])

修改后的代码:

def add(A,B): C=[] for i in range(0,3): temp=[] for j in range(0,3): temp.append(int(A[i][j])+int(B[i][j])) C.append(temp) return C def mul(A,B): D=[] for i in range(0,3): temp=[] for j in range(0,3): result=0 for k in range(0,3): result+=(int(A[i][k]))*(int(B[k][j])) temp.append(result) D.append(temp) return D if __name__=="__main__": print("请输入矩阵A") A=[] for i in range(0,3): temp=[] s=input() temp=s.split(' ') A.append(temp) print("请输入矩阵B") B=[] for i in range(0,3): temp=[] s=input() temp=s.split(' ') B.append(temp) print(add(A,B)) print(mul(A,B))

运行结果:

请输入矩阵A 111 1 22 34 32 33 111 24 4 请输入矩阵B 112 23 2 3 5 6 43 3 4 [[223, 24, 24], [37, 37, 39], [154, 27, 8]] [[13381, 2624, 316], [5323, 1041, 392], [12676, 2685, 382]]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有