📅  最后修改于: 2023-12-03 15:37:15.030000             🧑  作者: Mango
这是一道编程题,要求编写一个函数实现计算矩阵加法的功能。
给定两个矩阵 A 和 B,计算它们的和 C = A + B。
输入格式:
输出格式:
输入:
2 3
1 2 3
4 5 6
2 3
-1 -2 -3
-4 -5 -6
输出:
0 0 0
0 0 0
矩阵加法就是对应位置的元素相加,注意需要先判断两个矩阵的大小是否一致。
我们可以先将输入的字符串转化为矩阵,然后再计算相加的结果。最终将结果矩阵转化为指定的输出格式。
def matrix_addition(a, b):
row_a, col_a = len(a), len(a[0])
row_b, col_b = len(b), len(b[0])
if row_a != row_b or col_a != col_b:
return 'error'
else:
result = []
for i in range(row_a):
row = []
for j in range(col_a):
row.append(a[i][j] + b[i][j])
result.append(row)
return result
def from_input_string(input_string):
lines = input_string.strip().split('\n')
row_a, col_a = map(int, lines.pop(0).split())
matrix_a = [list(map(int, line.split())) for line in lines[:row_a]]
matrix_b = [list(map(int, line.split())) for line in lines[row_a:]]
return matrix_a, matrix_b
def from_output_string(output_string):
lines = output_string.strip().split('\n')
if lines[0] == 'error':
return 'error'
else:
result = [[str(num) for num in row] for row in map(int, line.split()) for line in lines]
return '\n'.join(' '.join(row) for row in result)
def to_input_string(inputs):
matrix_a, matrix_b = inputs
row_a, col_a = len(matrix_a), len(matrix_a[0])
row_b, col_b = len(matrix_b), len(matrix_b[0])
input_string = '{} {}\n'.format(row_a, col_a)
input_string += '\n'.join(' '.join(str(num) for num in row) for row in matrix_a)
input_string += '\n'
input_string += '\n'.join(' '.join(str(num) for num in row) for row in matrix_b)
return input_string
def to_output_string(output):
if output == 'error':
return 'error\n'
else:
result = [[str(num) for num in row] for row in output]
return '\n'.join(' '.join(row) for row in result) + '\n'
代码中包含4个函数:
matrix_addition(a, b)
:用于计算矩阵加法的函数。from_input_string(input_string)
:将输入字符串转化为矩阵的函数,返回值为元组 (matrix_a, matrix_b)。from_output_string(output_string)
:将输出字符串转化为矩阵的函数,返回值为矩阵或 error 字符串。to_input_string(inputs)
:将元组 (matrix_a, matrix_b) 转化为输入字符串的函数。to_output_string(output)
:将输出矩阵或 error 字符串转化为输出字符串的函数。主要的函数是 matrix_addition(a, b)
,该函数根据题目要求实现了矩阵加法的功能,返回值为相加的结果矩阵或 error 字符串。对于输入和输出字符串的转化,我们可以使用常用的字符串解析和构造方式,此处不再赘述。