Сумма элементов ниже главной диагонали матрицы python

#python #matrix #diagonal

Вопрос:

В принципе, я должен написать программу, которая создает матрицу N на N, заполняет ее случайными числами и вычисляет сумму всех элементов ниже главной диагонали матрицы. Я уже сделал все, кроме суммы элементов, и это то, что у меня есть

 import random

def llenar_matriz(n):
    # Fills the matrix with random numbers between 1 and 99
    for r in range(n):
        fila = []
        for c in range(n):
            fila.append(random.randint(1,99))
        matriz.append(fila)
    return matriz

def imprimir_matriz(matriz):
    # Prints the matrix properly (makes every list go below the previous one)
    filas = len(matriz)
    columnas = len(matriz[0])
    for f in range(filas):
        for c in range(columnas):
            print ("=" %matriz[f][c], end="")
        print()

def suma_matriz(matriz):
     #This should make the sum of all the values below the main diagonal of the matrix
   

# Programa principal
lado = int(input("Ingrese el ancho de la matriz: ")) #input value that makes the matrix N by N
matriz = []
llenar_matriz(lado)
imprimir_matriz(matriz)
total = suma_matriz()

print("La suma de los numeros debajo de la diagonal principal de la matriz es: ",total)
 

Мне нужна помощь с функцией, которая будет получать матрицу и суммировать все значения ниже главной диагонали

Комментарии:

1. Привет @Гиббон. С чем именно у тебя проблемы? Элемент матрицы находится ниже главной диагонали, если r>c, где r-строка элемента, а c-столбец.

2. У меня возникли проблемы с созданием функции, которая добавляет значение каждого элемента ниже главной диагонали, мне нужно сложить все числа за главной диагональю и все, что ниже, и я не знаю, как это сделать

3. В качестве подсказки подумайте о том, как вы могли бы изменить range вызовы в «impramir_matriz», чтобы печатать только записи ниже диагонали.

4. Хорошо , я так и сделаю, спасибо

Ответ №1:

Попробуй это

 import random

def llenar_matriz(n):
    # Fills the matrix with random numbers between 1 and 99
    matriz = []
    for r in range(n):
        fila = []
        for c in range(n):
            fila.append(random.randint(1,99))
        matriz.append(fila)
    return matriz

def imprimir_matriz(matriz):
    filas = len(matriz)
    columnas = len(matriz[0])
    for f in range(filas):
        for c in range(columnas):
            print ("=" % matriz[f][c], end="")
        print()


def suma_matriz(matriz):
     #This should make the sum of all the values below the main diagonal of the matrix
    sum = 0
    for i in range(len(matriz)):
        for j in range(len(matriz)):
            if i != j and i > j: 
                sum  = matriz[i][j]
    return sum
   

# Programa principal
lado = int(input("Ingrese el ancho de la matriz: ")) #input value that makes the matrix N by N
matriz = llenar_matriz(lado)
imprimir_matriz(matriz)
total = suma_matriz(matriz)

print("La suma de los numeros debajo de la diagonal principal de la matriz es: ",total)
 

Дает выход

 Ingrese el ancho de la matriz: 5
77 22 19 46 77 
32 14 39  2 61 
92 26 54 56 92 
24 73 37 40 16 
27 34 51 35 39 
La suma de los numeros debajo de la diagonal principal de la matriz es:  431