您现在的位置是:主页 > news > 如何维护网站的运营/营销咨询顾问
如何维护网站的运营/营销咨询顾问
admin2025/5/7 14:45:41【news】
简介如何维护网站的运营,营销咨询顾问,如何规划政府门户网站建设,鞍山做网站或目录 题目描述 解决方案 代码 代码走读 传送门 测试用例 1. 正常场景 2. 当矩阵中的数值不是数字类型时 3. 输入的矩阵维数不是数字类型时 题目描述 依次输入矩阵A, B的维数,并输入两个矩阵的元素。打印两个矩阵相乘(即A * B)的结果…
目录
题目描述
解决方案
代码
代码走读
传送门
测试用例
1. 正常场景
2. 当矩阵中的数值不是数字类型时
3. 输入的矩阵维数不是数字类型时
题目描述
依次输入矩阵A, B的维数,并输入两个矩阵的元素。打印两个矩阵相乘(即A * B)的结果。
输入描述
先输入矩阵A的维数和元素。元素位置根据维数动态生成。
Please input matrix A row number: 2
Please input matrix A column number: 3
Please input number for matrixA[0][0]: 3
Please input number for matrixA[0][1]: 5
Please input number for matrixA[0][2]: 1
Please input number for matrixA[1][0]: 7
Please input number for matrixA[1][1]: 2
Please input number for matrixA[1][2]: 6
再输入矩阵B的维数和元素。元素位置根据维数动态生成。
Please input matrix B row number: 3
Please input matrix B column number: 2
Please input number for matrixB[0][0]: 1
Please input number for matrixB[0][1]: 6
Please input number for matrixB[1][0]: 23
Please input number for matrixB[1][1]: 8
Please input number for matrixB[2][0]: 2
Please input number for matrixB[2][1]: 5
输出描述
输出矩阵A, B,并打印A * B的结果:
A:
| 3 5 1 |
| 7 2 6 |
B:
| 1 6 |
| 23 8 |
| 2 5 |
matrixA * matrixB =
C:
| 120 63 |
| 65 88 |
解决方案
1、输入矩阵A,B的维数、并动态生成矩阵中的元素的位置,提示用户输入每一个位置上对应的元素。
2、根据矩阵运算规则计算A* B,得到最终结果。
3、打印结果。
代码
class Matrix(object):def __init__(self, row, column, name):self.__row = rowself.__column = columnself.name = nameself.__base = [[0] * column for i in range(row)]@propertydef row(self):return self.__row@propertydef column(self):return self.__columndef __repr__(self):print_message_list = [self.name + ":"]for i in range(self.row):line = "|\t"for j in range(self.column):line += str(self.__base[i][j]) + "\t"line += "|"print_message_list.append(line)return "\n".join(print_message_list)__str__ = __repr__def set(self, row, column, value):self.__base[row][column] = valuedef get(self, row, column):return self.__base[row][column]def input(self):for i in range(self.row):for j in range(self.column):self.__base[i][j] = int(input("Please input number for matrix%s[%d][%d]: " % (self.name, i, j)))returndef __mul__(self, other_matrix):if not isinstance(other_matrix, Matrix):raise TypeError("cannot multiply Matrix and %s" % type(other_matrix).__name__)result = Matrix(self.row, other_matrix.column, "result of %s * %s" % (self.name, other_matrix.name))for i in range(result.row):for j in range(result.column):a = 0b = 0while (a < self.column) and (b < other_matrix.row):result.set(i, j, result.get(i, j) + self.get(i, a) * other_matrix.get(b, j))a += 1b += 1return resultdef create(matrix_name):row = int(input("Please input matrix %s row number: " % matrix_name))column = int(input("Please input matrix %s column number: " % matrix_name))if row <= 0 or column <= 0:raise ValueError("matrix %s row and column less than or equal to zero" % matrix_name)return Matrix(row, column, matrix_name)def main():matrix_a = create("A")matrix_a.input()matrix_b = create("B")matrix_b.input()matrix_c = matrix_a * matrix_bmatrix_c.name = "C"print(matrix_a)print(matrix_b)print("matrix%s * matrix%s = " % (matrix_a.name, matrix_b.name))print(matrix_c)if __name__ == '__main__':main()
代码走读
# 实现一个矩阵类Matrix,包含了矩阵的相关操作。 class Matrix(object):# 初始化一个矩阵对象需要三个参数:矩阵的行数row,列数column,以及矩阵的名称name。def __init__(self, row, column, name):self.__row = rowself.__column = columnself.name = name# self.__base是一个二维列表,该字段实际着存储矩阵的内部元素。# 默认情况下它会被初始化为 row * column 的二维列表,每个子列表的元素都初始化为0。self.__base = [[0] * column for i in range(row)]@propertydef row(self):return self.__row@propertydef column(self):return self.__column# 重写__repr__,定制矩阵打印的结果。def __repr__(self):print_message_list = [self.name + ":"]for i in range(self.row):line = "|\t"for j in range(self.column):line += str(self.__base[i][j]) + "\t"line += "|"print_message_list.append(line)return "\n".join(print_message_list)# 让__str__与__repr__的返回结果相同。__str__ = __repr__# 给出指定的行数row,列数column和新的值value,设置矩阵的值def set(self, row, column, value):self.__base[row][column] = value# 给定指定的行数row,列出column来获取矩阵的值def get(self, row, column):return self.__base[row][column]# 通过输入的方式填充矩阵。def input(self):for i in range(self.row):for j in range(self.column):self.__base[i][j] = int(input("Please input number for matrix%s[%d][%d]: " % (self.name, i, j)))return# 通过重写__mul__方法,定义矩阵相乘。def __mul__(self, other_matrix):if not isinstance(other_matrix, Matrix):raise TypeError("cannot multiply Matrix and %s" % type(other_matrix).__name__)result = Matrix(self.row, other_matrix.column, "result of %s * %s" % (self.name, other_matrix.name))for i in range(result.row):for j in range(result.column):a = 0b = 0while (a < self.column) and (b < other_matrix.row):result.set(i, j, result.get(i, j) + self.get(i, a) * other_matrix.get(b, j))a += 1b += 1return result# 定义一个工厂函数,用来创建矩阵。 def create(matrix_name):row = int(input("Please input matrix %s row number: " % matrix_name))column = int(input("Please input matrix %s column number: " % matrix_name))if row <= 0 or column <= 0:raise ValueError("matrix %s row and column less than or equal to zero" % matrix_name)return Matrix(row, column, matrix_name)# 主函数 def main():matrix_a = create("A")matrix_a.input()matrix_b = create("B")matrix_b.input()# 矩阵c是由矩阵a和b相乘得出matrix_c = matrix_a * matrix_bmatrix_c.name = "C"print(matrix_a)print(matrix_b)print("matrix%s * matrix%s = " % (matrix_a.name, matrix_b.name))print(matrix_c)if __name__ == '__main__':main()
传送门
1. input()函数
Python input函数:接收标准输入数据_TCatTime的博客-CSDN博客_python接收输入参数
2. int()函数
Python int函数_TCatTime的博客-CSDN博客_int函数python
3. ValueError异常
Python异常 ValueError_TCatTime的博客-CSDN博客_python valueerror
4. print()函数
Python print函数:将对象打印输出_TCatTime的博客-CSDN博客_python打印
5. range()函数
Python range函数_TCatTime的博客-CSDN博客_python range
6. len()函数
Python len函数_TCatTime的博客-CSDN博客_len函数
7. exit()函数
Python exit函数_TCatTime的博客-CSDN博客_python的exit函数
测试用例
1. 正常场景
矩阵A(3 X 4),矩阵B(3 X 2)
Please input matrix A rows number: 3
Please input matrix A columns number: 4
------------
Please input number for matrixA[0][0]: 5
Please input number for matrixA[0][1]: 67
Please input number for matrixA[0][2]: 23
Please input number for matrixA[0][3]: 12
Please input number for matrixA[1][0]: 34
Please input number for matrixA[1][1]: 17
Please input number for matrixA[1][2]: 9
Please input number for matrixA[1][3]: 0
Please input number for matrixA[2][0]: 34
Please input number for matrixA[2][1]: 22
Please input number for matrixA[2][2]: 1
Please input number for matrixA[2][3]: 31
------------
Please input matrix B rows number: 3
Please input matrix B columns number: 2
------------
Please input number for matrixB[0][0]: 46
Please input number for matrixB[0][1]: 2
Please input number for matrixB[1][0]: 43
Please input number for matrixB[1][1]: 1
Please input number for matrixB[2][0]: 0
Please input number for matrixB[2][1]: 56MatrixA:
| 5 67 23 12 |
| 34 17 9 0 |
| 34 22 1 31 |MatrixB:
| 46 2 |
| 43 1 |
| 0 56 |MatrixA * MatrixB = MatrixC
MatrixC:
| 3111 1365 |
| 2295 589 |
| 2510 146 |
2. 当矩阵中的数值不是数字类型时
Please input matrix A rows number: 3
Please input matrix A columns number: 4
------------
Please input number for matrixA[0][0]: 12
Please input number for matrixA[0][1]: 3r
[ERROR]Please input integer number for matrixA element
代码拦截提示错误正确。
3. 输入的矩阵维数不是数字类型时
Please input matrix A rows number: er
[ERROR]Please input integer number for rows and column.
代码拦截提示正确。