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        

 运行结果

原文地址:https://www.cnblogs.com/AHappyBird/p/9415649.html