首页 > 代码库 > Python练习题 028:求3*3矩阵对角线数字之和
Python练习题 028:求3*3矩阵对角线数字之和
【Python练习题 028】 求一个3*3矩阵对角线元素之和
-----------------------------------------------------
这题解倒是解出来了,但总觉得代码太啰嗦。矩阵这东西,应该有个很现成的方法可以直接计算才对…… 啰嗦代码如下:
str = input(‘请输入9个数字,用空格隔开,以形成3*3矩阵:‘) n = [int(i) for i in str.split(‘ ‘)] #获取9个数字 mx = [] #存储矩阵 for i in range(3): mt = [] #收集矩阵中每行的数字列表 for j in range(3): mt.append(n[i*3 + j]) mx.append(mt) #每行数字存储进mx列表 print(mt) sum1 = 0 sum2 = 0 for i in range(3): sum1 += mx[i][i] sum2 += mx[2-i][i] print(‘\方向对角线3元素之和为:%s‘ % sum1) print(‘/方向对角线3元素之和为:%s‘ % sum2)
输出结果如下:
请输入9个数字,用空格隔开,以形成3*3矩阵:7 9 6 5 4 8 6 7 3
[7, 9, 6]
[5, 4, 8]
[6, 7, 3]
\方向对角线3元素之和为:14
/方向对角线3元素之和为:16
只要将代码稍微改一下,就可以接受任意 n*n 矩阵的计算了,而且数字数目输入有误时,也可以提示重新输入。改后代码如下:
import math err = True while err: str = input(‘请输入n**2个数字,用空格隔开,以形成n*n的矩阵:‘) n = [int(i) for i in str.split(‘ ‘)] #获取9个数字 t = math.floor(math.sqrt(len(n))) if t == math.sqrt(len(n)) and t != 1: err = False else: print(‘您输入的数字个数有误,请重试。‘) mx = [] #存储矩阵 for i in range(t): mt = [] #收集矩阵中每行的数字列表 for j in range(t): mt.append(n[i*t + j]) mx.append(mt) #每行数字存储进mx列表 print(mt) sum1 = 0 sum2 = 0 for i in range(t): sum1 += mx[i][i] sum2 += mx[t-1-i][i] print(‘\方向对角线元素之和为:%s‘ % sum1) print(‘/方向对角线元素之和为:%s‘ % sum2)
输出结果如下:
请输入n**2个数字,用空格隔开,以形成n*n的矩阵:8 7 5 4 3 5 6 7 4 5 3 4 2 9 8 7 5 8 9 6 5 2 3 2 6
[8, 7, 5, 4, 3]
[5, 6, 7, 4, 5]
[3, 4, 2, 9, 8]
[7, 5, 8, 9, 6]
[5, 2, 3, 2, 6]
\方向对角线元素之和为:31
/方向对角线元素之和为:19
虽然凑合能用,但我仍然坚信,Python肯定已经准备好了什么函数或方法,可以轻松计算矩阵。容我有空好好搜索一番,再来更新。
++++++++++++++++++++++++++++++++++++++
题目出处:编程语言入门经典100例【Python版】
Python练习题 028:求3*3矩阵对角线数字之和
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。