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肯定已经准备好了什么函数或方法,可以轻松计算矩阵。容我有空好好搜索一番,再来更新。
++++++++++++++++++++++++++++++++++++++
Python练习题 028:求3*3矩阵对角线数字之和的更多相关文章
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- [LeetCode] Sum Root to Leaf Numbers 求根到叶节点数字之和
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers) 深度优先搜索的解题详细介绍,点击 给定一个二叉树,它的每个结点都存放 ...
- Java实现 LeetCode 129 求根到叶子节点数字之和
129. 求根到叶子节点数字之和 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 12 ...
- 【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)
总述 全部用DFS来做 重点一:参数的设置:为Root,路径字符串,路径List集合. 重点二:步骤: 1 节点为null 2 所有节点的操作 3 叶子结点的操作 4 非叶节点的操作 题目257. 二 ...
- 【Python】【demo实验36】【基础实验】【求3*3矩阵的主对角线之和】
题目: 求一个3*3矩阵主对角线元素之和. 主对角线:从左上多右下的书归为主对角线 副对角线:从左下至右上的数归为副对角线. 我的源码: #!/usr/bin/python # encoding=ut ...
- 29.求3x3的整数矩阵对角线元素之和
#include <stdio.h> #include <stdlib.h> int main() { ,a[][]; ;i<;i++) { ;j<;j++) sc ...
- python 练习题1--打印三位不重复数字
题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码 ...
- Python练习题 045:Project Euler 017:数字英文表达的字符数累加
本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...
随机推荐
- 著名加密库收集 Encrypt
CryptoAPI 微软的CryptoAPI crypt32.lib,advapi32.lib,cryptui.lib #include <wincrypt.h>#include < ...
- Hadoop Java开发实用快捷键收藏
不断总结更新.... Alt + / 补全 Ctrl + T 打出结构 Ctrl + 2 ,再选择 Quick Assist - Assign to local variable Ctrl ...
- jspace2d——A free 2d multiplayer space shooter
http://code.google.com/p/jspace2d/ —————————————————————————————————————————————————————————————— We ...
- SKAction
[SKAction] 1.Every action is an opaque object that describes a change you want to make to the scene. ...
- pyqt中QDateTimeEdit/QDateEdit相关使用方法
QDateTimeEdit/QDateEdit clear (self)QDate date (self)QDateTime dateTime (self)setDate (self, QDate d ...
- 转载sublime text注册码
直接输入注册码就可以了 ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 ...
- DevExpress控件使用经验总结
转自:http://www.cnblogs.com/wuhuacong/archive/2011/08/31/2161002.html
- C# Hashtable 简述
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...
- JavaScript要点(十七) Math 对象
来源:JavaScript 参考手册 Math 对象 Math 对象用于执行数学任务. Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(). 语法 var ...
- Builder
Builder模式的使用情景 相同的方法, 不同的执行顺序, 产生不同的事件结果 多个部件或零件, 都可以装配到一个对象中, 但是产生的运行结果又不相同 产品类比较复杂, 或者产品类中的调用顺序不同产 ...