思路:
随机生成一个n阶方阵;计算方阵两对角线各数之和;最后求两数差的绝对值。
import random
import numpy as np
min_size = 3 # n的最小值
max_size = 10 # n的最大值
n = random.randint(min_size,max_size+1)
mat = []
# 随机生成 n 阶方阵
def createArr(n):
for i in range(0,n+1):
arr = []
for j in range(0,n+1):
# 在(-100,100)的区间中随机选取一个数插入方阵中
arr.append(random.randint(-100,100))
mat.append(arr)
# 打印输出方阵
def printArr(mat):
size = np.shape(mat)[0]
print("n = {}".format(size))
print("------"*size+"--")
for i in range(0,size):
arr = mat[i]
print("|",end="")
for j in range(0,size):
print('%-6d'%arr[j],end="")
print("|")
print("------"*size+"--")
# 计算方阵对角线之和之间的绝对差
def result(mat):
left_arr_sum = 0
right_arr_sum = 0
size = np.shape(mat)[0]
for n in range(0,size):
left_arr_sum = left_arr_sum + mat[n][n]
right_arr_sum = right_arr_sum + mat[n][size-1-n]
result_num = abs(left_arr_sum - right_arr_sum)
print("该方阵对角线之和之间的绝对差为:{}".format(result_num))
createArr(n)
printArr(mat)
result(mat)
转载请注明原文地址:https://ipadbbs.8miu.com/read-28707.html