-2

Well, I tried for an exercise writing a python code that multiplies matrices and prints them. I keep getting the 'NoneType' object is not subscriptable error. do you know whats my mistake?

I think I somehow got the type wrong but I can't figure out how

def main():
    matrix = input_matrix()
    print("Please enter your second matrix:")
    matrix_2 = input_matrix()
    print_matrix(matrix)
    print()
    print_matrix(matrix_2)
    print_multiplied_matrix(multiplier_matrix(matrix, matrix_2), len(matrix[0]))


def multiplier_matrix(matrix_1, matrix_2):
    num_of_rows_1 = len(matrix_1)
    num_of_columns_1 = len(matrix_1[0])
    num_of_columns_2 = len(matrix_2[0])
    multiplied_matrix = [[0 for x in range(num_of_columns_2)] for y in range(num_of_rows_1)]
    for a in range(num_of_rows_1):
        for b in range(num_of_columns_2):
            element = 0
            for k in range(num_of_columns_1):
                    element += matrix_1[a][k] * matrix_2[k][b]
            multiplied_matrix[a][b] = element


def print_matrix(matrix):
    num_of_rows = len(list(matrix))
    num_of_columns = len(list(matrix)[0])
    for i in range(num_of_rows):
        for j in range(num_of_columns):
            print(matrix[i][j], end=' ')
        print()


def print_multiplied_matrix(matrix, x):
    for i in range(x):
        for j in range(x):
            print(matrix[i][j], end=' ')
        print()


def input_matrix():
    print("Hello, please enter the number of rows you'd like to have:")
    h = int(input())
    print("Hello, please enter the number of columns you'd like to have:")
    w = int(input())
    print()
    matrix = [[0 for x in range(w)] for y in range(h)]
    for i in range(h):
        for j in range(w):
            print("what do you want element " + str(i) + "," + str(j) + " to be?")
            input_elem = int(input())
            matrix[i][j] = input_elem
    print()
    return matrix


main()

Thank you

1 Answers1

0

Thank you whoever answered. I don't believe I forgot I needed to add return.

Thank you