Найти сумму элементов правой диагонали и произведение элементов левой диагонали

 def func(matrix):
    left = 1
    sum = 0
    for i,j in enumerate(matrix):
        left *= matrix[i][i]
        sum += matrix(j[-(i + 1)])
    print(left,sum)
m = [[1, 8, 7],
     [1, 9, 9],
     [2, 3, 8]]
print(func(m))
C произведением все отлично, но с суммой не могу понять в чем проблема. К элемента диагонали может не верно обращаюсь. Благодарю заранее!!!

Ответы (2 шт):

Автор решения: Zhihar
left *= matrix[i][i]

sum += matrix(j[-(i + 1)])

а как именно вы обращаетесь к матрице по 2м индексам? что круглые скобки должны символизировать?

можно так сделать (к примеру):

for i, j in enumerate(matrix):
    left *= matrix[i][i]
    sum += matrix[i][len(j) - i - 1]

вот так даже попроще будет:

for i, row in enumerate(matrix):
    left *= row[i]
    sum += row[-i - 1]
→ Ссылка
Автор решения: strawdog

Вот, на всякий случай, решение с numpy:

import numpy as np
m = [[1, 8, 7],
     [1, 9, 9],
     [2, 3, 8]]

arr=np.array(m)
my_sum = sum(np.diag(arr)) # 18
my_prod = np.prod(np.diag(np.rot90(arr))) # 126
→ Ссылка