编写计算两个矩阵的乘积的函数,并测试。
题目中所给代码如下
'''
编写函数,计算两个矩阵的乘积。
'''
# 该函数用于把一维列表转换为二维列表
def strToMatrxi(ju):
############beigin###################################
############end###################################
# 定义矩阵相乘函数
def matrixMultiply(matrix1):
############beigin###################################
############end###################################
def main():
'''
矩阵的输入格式为行之间用分号分隔,列之间用逗号分隔
三行三列矩阵输入格式为:1,2,3;3,4,5;5,6,7
'''
str1 =input("")
str2 =input("")#现在这两个是字符串型
matrix1 =strToMatrxi(str1)
matrix2 =strToMatrxi(str2)
print(matrix1)
print(matrix2)
print("矩阵相乘后的运算结果为:")
matrix3 =list(matrixMultiply(matrix1)(matrix2))
print(matrix3)
main()
题目要求如下:
根据提示,在右侧编辑器补充代码,计算并输出两个矩阵的乘积。
假定输入的矩阵满足如下条件:第一个矩阵的行数等于第二个矩阵的列数。
输入和输出格式参见测试说明。
测试输入如下:
1,2,3;3,4,5;5,6,7
2,5,8;2,6,7;3,3,4
预期输出为:
[[1, 2, 3], [3, 4, 5], [5, 6, 7]] [[2, 5, 8], [2, 6, 7], [3, 3, 4]]
矩阵相乘后的运算结果为:
[[15, 26, 34], [29, 54, 72], [43, 82, 110]]
'''
编写函数,计算两个矩阵的乘积。
'''
# 该函数用于把一维列表转换为二维列表
def strToMatrxi(ju):
return list(map(lambda x: list(map(int, x.split(","))), ju.split(";")))
# 定义矩阵相乘函数
def matrixMultiply(matrix1, matrix2):
m, n = len(matrix1), len(matrix1[0])
p, q = len(matrix2), len(matrix2[0])
if n != p: return None
matrix3 = [[0] * q for _ in range(m)]
for i in range(m):
for j in range(q):
for k in range(n):
matrix3[i][j] += matrix1[i][k] * matrix2[k][j]
return matrix3
def main():
'''
矩阵的输入格式为行之间用分号分隔,列之间用逗号分隔
三行三列矩阵输入格式为:1,2,3;3,4,5;5,6,7
'''
str1 =input("")
str2 =input("")#现在这两个是字符串型
matrix1 =strToMatrxi(str1)
matrix2 =strToMatrxi(str2)
print(matrix1)
print(matrix2)
print("矩阵相乘后的运算结果为:")
matrix3 =list(matrixMultiply(matrix1, matrix2))
print(matrix3)
main()
def strToMatrix(ju):
matrix = [[int(num) for num in row.split(',')] for row in ju.split(';')]
return matrix
def matrixMultiply(matrix1):这个只有一个参数?怎么乘
根据你的调用,你想返回一个函数,再传入另一个参数?好奇怪的写法
def matrixMultiply(matrix1):
def multiply(matrix2):
matrix3 = [[0]*len(matrix2[0]) for i in range(len(matrix1))]
for i in range(len(matrix1)):
for j in range(len(matrix2[0])):
for k in range(len(matrix2)):
matrix3[i][j] += matrix1[i][k] * matrix2[k][j]
return matrix3
return multiply