• python_矩阵的加法和乘法计算(包括矩阵的动态输入,纯列表实现不引入其他模块)


    # 6-16
    def matrixSum():
        print "要进行矩阵加法,行列数必须相同"
        M=[]
        N=[]
        res1 = createMat(M,'M')
        res2 = createMat(N,'N')
        print M
        print N
        row_m = res1[0]
        column_m = res1[1]
        row_n = res2[0]
        column_n = res2[1]
        if row_n!=row_m or column_n!=column_m:
            print '行列数不相等!'
            return ERROR
        row = row_m
        column = column_m
        sumres = copy.copy(M)
        for i in range(row):
            for j in range(column):
                sumres[i][j] = M[i][j]+N[i][j]
        print 'M+N = '
        print sumres
        return None
    
    def matriixMultiply():
        print "要进行矩阵乘法,M的列数必须与N的行数相同"
        M=[]
        N=[]
        res1 = createMat(M,'M')
        res2 = createMat(N,'N')
        row_m = res1[0]
        row_n = res2[0]
        column_m = res1[1]
        column_n = res2[1]
        if column_m != row_n:
            print 'M的列数与N的行数不相等!'
            return ERROR
        print 'M:',M
        print 'N:',N
        multiplyres = []
        for i in range(row_m):
            rowlist = [0]*column_n
            multiplyres.append(rowlist)
        for m in range(column_n):
            for i in range(row_m):
                for j in range(column_m):
                    multiplyres[i][m] += M[i][j]*N[j][m]        
        #很关键 multiplyres的行数=row_m,列数=column_n,column_n有可能大于row_m
    
        print 'M*N = '
        print multiplyres
        return None
    
    def createMat(mat,name):
        print '输入%s的行数和列数' % name
        row,column = raw_input('行数:'),raw_input('列数:')
        row = int(row)
        column = int(column)
        for i in range(row):
            rowlist = []
            for j in range(column):
                print '输入%s矩阵第%d行第%d个数' % (name,i+1,j+1)
                rowlist.append(int(raw_input()))
            mat.append(rowlist)
        return row,column        
    

     运行结果

  • 相关阅读:
    原生JS中apply()方法的一个值得注意的用法
    关于“float”的一次探索--遇到了一个span元素可以设置宽高引发的思考
    git常用命令
    react 项目全家桶构件流程
    vue回顶部 组件 可以直接使用
    vscode左边侧边栏字体的大小
    小程序的福音,
    Android实战技巧:Dialog (转)
    给Android 应用开发者的十个建议(转)
    多线程与异步的区别(转)
  • 原文地址:https://www.cnblogs.com/AHappyBird/p/9415649.html
Copyright © 2020-2023  润新知