Найти сумму элементов правой диагонали и произведение элементов левой диагонали
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