近日在编写矩阵对角线元素求和的代码时发现现有的代码均未考虑次对角线,在此献上自己的源码
1. 创建函数功能
def Sum_matrix_diagonally(matrix_row,matrix_column):#通过传入行数和列数计算主次对角线之和,包括重复值 需要检查
matrix_save = [] # 设立存储数据的数组存储每一行的元素
Sum = 0
for i in range(matrix_row):#计算主对角线
for j in range(matrix_column):
if i == j:
Sum += matrix[i][j]
for i in range(matrix_row):#计算次对角线
Sum += matrix[i][matrix_column - 1]
matrix_column -= 1
return Sum
def inPut():#实现对行数和列数相等的判断 相等才可以进行对角线计算
num1 = int(input("请输入矩阵的行数")) # 矩阵的行数
num2 = int(input("请输入矩阵的列数")) # 矩阵的列数
if num1 == num2:
return num1,num2
else:
print("行数和列数不相等,请重新输入")
return 0,0
def input_element_matrix(matrix_row,matrix_column):#输入矩阵元素的函数
matrix = [] # 矩阵数组
for i in range(matrix_row):
matrix_save = []
for j in range(matrix_column):
matrix_save.append(int(input("请输入第{}行第{}列的元素:".format(i + 1, j + 1))))
matrix.append(matrix_save)
print("你输入的数组为:", matrix)
return matrix
def ui():
print("----请选择对矩阵的功能数字----\n----1-主对角线和\n----2-次对角线\n----3-主次对角线之和\n----4-退出")
2.主程序部分-实现函数调用及结果输出
while(True):
ui()
num_input = int(input())
if num_input == 1:#1-主对角线和
matrix_row, matrix_column = inPut()
if matrix_row == 0:#存在bug 应该重新输入行数和列数 不应该直接返回功能选择
continue
else:
matrix = input_element_matrix(matrix_row, matrix_column)
Sum = 0
for i in range(matrix_row): # 计算主对角线
for j in range(matrix_column):
if i == j:
Sum += matrix[i][j]
print("你输入的矩阵经计算后主对角线之和为:{}".format(Sum))
elif num_input == 2:#2-次对角线
matrix_row, matrix_column = inPut()
if matrix_row == 0:
continue
else:
matrix = input_element_matrix(matrix_row, matrix_column)
for i in range(matrix_row): # 计算次对角线
Sum += matrix[i][matrix_column - 1]
matrix_column -= 1
print("你输入的矩阵经计算后次对角线之和为{}:".format(Sum))
elif num_input == 3:#3-主次对角线之和
matrix_row,matrix_column = inPut()
if matrix_row == 0:
continue
else:
matrix = input_element_matrix(matrix_row,matrix_column)
Sum = Sum_matrix_diagonally(matrix_row,matrix_column)
# 计算次对角线 需要判断n是不是偶数
if matrix_row % 2 == 1: #检查有无重复值
a = int((matrix_row - 1) / 2)
b = int((matrix_column - 1) / 2)
Sum -= matrix[a][b]
print("你输入的矩阵经计算后主次对角线之和为:{}\n".format(Sum))
elif num_input == 4:
print("感谢使用")
break
else:
print("没有此功能,请重新输入")
continue
😊😊😊文章中提及一个返回的小bug,欢迎大佬分享意见。😊😊😊