python 给定一个n×n的方阵,本题要求计算该矩阵主、副对角线上的所有元素之和。主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线。。
时间: 2023-09-15 22:15:20 浏览: 106
可以使用两个变量分别记录主对角线和副对角线上的元素之和,然后遍历矩阵,对于每个元素,若它在主对角线上,则将其加到主对角线和中;若它在副对角线上,则将其加到副对角线和中。最后返回两个和即可。
以下是示例代码实现:
```python
def diagonal_sum(matrix):
n = len(matrix)
main_sum = 0 # 主对角线和
sub_sum = 0 # 副对角线和
for i in range(n):
main_sum += matrix[i][i]
sub_sum += matrix[i][n-i-1]
return main_sum, sub_sum
```
测试代码:
```python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
main_sum, sub_sum = diagonal_sum(matrix)
print("主对角线和:", main_sum)
print("副对角线和:", sub_sum)
```
输出结果为:
```
主对角线和: 15
副对角线和: 15
```
相关问题
给定一个n×n的方阵,本题要求计算该矩阵主、副对角线上的所有元素之和。主对角线为从矩阵的左上角至右下角的连线,副对角线为从矩阵的右上角至左下角的连线。python
代码如下:
```
def diagonal_sum(matrix):
n = len(matrix)
main_sum = 0
sub_sum = 0
for i in range(n):
main_sum += matrix[i][i]
sub_sum += matrix[i][n-i-1]
return main_sum + sub_sum
# 测试
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(diagonal_sum(matrix)) # 输出:25
```
这个函数可以计算一个 n x n 的方阵的主、副对角线上的所有元素之和。主对角线和副对角线上的元素可以通过下标来访问,主对角线上的元素下标都是 (i, i),副对角线上的元素下标都是 (i, n-i-1)。我们可以用一个循环来遍历主、副对角线上的元素,并累加它们的值,最后返回它们的和。
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。‘
这道题可以用两重循环来遍历矩阵中的所有元素,对于每个元素,判断它是否在副对角线、最后一列或最后一行上,如果不在,则累加到总和中。
具体实现可以参考下面的代码:
```python
def sum_of_matrix(matrix):
n = len(matrix)
total = 0
for i in range(n):
for j in range(n):
if j != n-1 and i != n-1 and i+j != n-1:
total += matrix[i][j]
return total
```
其中,`matrix` 是一个二维列表,表示输入的方阵。`n` 表示矩阵的边长,`total` 初始值为 0,表示累加的和。内部的两重循环遍历矩阵中的所有元素,判断它是否在副对角线、最后一列或最后一行上,如果不在,则将其累加到总和中。最后返回总和即可。
注意,这里的副对角线是从右上角到左下角,如果是从左上角到右下角的情况,需要修改判断条件。