@Herr_Shmulke

Как правильно умножить матрицу?

Здравствуйте. Решил узнать что такое матрица и с чем ее едят. Написал сложение и все работает как часы. Перешел на умножение и тут началось...
import random

def matrix(width, height):
    matrix = [[random.randrange(0, 10) for y in range(width)] for x in range(height)]
    for im in range(height):
        print(matrix[im])
    return matrix

def sumMatrix(mat0, mat1):
    answer = mat0
    print('-------------')
    for z in range(len(mat0)):
        for i in range(len(mat0[0])):
            answer[z][i] = answer[z][i] + mat1[z][i]
        print(answer[z])

def umMatrix(mat0, mat1):
    answer = mat0
    print('-------------')
    lengthMat0 = len(mat0)
    lengthMat1 = len(mat1[0])
    if (lengthMat0 == lengthMat1):
        print('Начало цикла')
        for z in range(mat0):
            for i in range[mat0[0]]:
                answer[z] = answer[z][i] * mat1[i]
        print(answer[z])

mata0 = matrix(1, 3)
print('-------------')
mata1 = matrix(5, 3)

input()
#sumMatrix(mata0, mata1)
umMatrix(mata0, mata1)


Суть вот в чем, почему-то этот код print(len(mata0) == len[mata1[0]]) # False
Почему-то выдает False. Если вывести каждое значение без len, то выводит None. В чем ошибка?
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
mata0 = matrix(1, 3)

[8]
[1]
[3]
[[8], [1], [3]]

mata1 = matrix(5, 3)

[1, 3, 7, 8, 5]
[8, 0, 5, 1, 6]
[4, 1, 8, 4, 7]
[[1, 3, 7, 8, 5], [8, 0, 5, 1, 6], [4, 1, 8, 4, 7]]

len(matrix(1,3) is 3 #True
len(matrix(5,3) is 3 #True
len(matrix(5,3) == len(matrix(1,3) #True

Вот тут ошибка

for i in range[mat0[0]]

Должно быть
range( mat0[0] )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы