矩阵相乘(Python)

目录

题目描述

解决方案

代码

代码走读

传送门

测试用例

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 = row
        self.__column = column
        self.name = name
        self.__base = [[0] * column for i in range(row)]

    @property
    def row(self):
        return self.__row

    @property
    def column(self):
        return self.__column

    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__

    def set(self, row, column, value):
        self.__base[row][column] = value

    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):
                se
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值