Skip to Main Content
Blog

Sum Diagonal of Matrix in Python

Sum Diagonal of Matrix in Python

def sum_diagonals(z: list[list[int]]):
    row_count = len(z)
    total_sum = 0

    for d in range(row_count):
        # Diagonal element
        total_sum += z[d][d]
        # Anti-diagonal element
        total_sum += z[row_count - 1 - d][d]

    # If matrix has odd number of rows, the middle element got
    # added twice, so subtract it once.
    if row_count % 2 != 0:
        total_sum -= z[row_count // 2][row_count // 2]

    return total_sum


def read_matrix(m: int, n: int):
    mat: list[list[int]] = []
    for r in range(m):
        row_input = input(f"Row {r:2d}: ").strip().split()
        row = list(map(int, row_input[:n]))
        mat.append(row)
    return mat


def main():
    n = int(input("Enter n: "))
    a = read_matrix(n, n)
    r = sum_diagonals(a)
    print(r)


if __name__ == "__main__":
    main()