【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矩阵对角线数字之和的更多相关文章

  1. Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

    要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...

  2. [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 ...

  3. Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)

    Leetcode之深度优先搜索(DFS)专题-129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers) 深度优先搜索的解题详细介绍,点击 给定一个二叉树,它的每个结点都存放 ...

  4. Java实现 LeetCode 129 求根到叶子节点数字之和

    129. 求根到叶子节点数字之和 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 12 ...

  5. 【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)

    总述 全部用DFS来做 重点一:参数的设置:为Root,路径字符串,路径List集合. 重点二:步骤: 1 节点为null 2 所有节点的操作 3 叶子结点的操作 4 非叶节点的操作 题目257. 二 ...

  6. 【Python】【demo实验36】【基础实验】【求3*3矩阵的主对角线之和】

    题目: 求一个3*3矩阵主对角线元素之和. 主对角线:从左上多右下的书归为主对角线 副对角线:从左下至右上的数归为副对角线. 我的源码: #!/usr/bin/python # encoding=ut ...

  7. 29.求3x3的整数矩阵对角线元素之和

    #include <stdio.h> #include <stdlib.h> int main() { ,a[][]; ;i<;i++) { ;j<;j++) sc ...

  8. python 练习题1--打印三位不重复数字

    题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码 ...

  9. Python练习题 045:Project Euler 017:数字英文表达的字符数累加

    本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...

随机推荐

  1. 第二百零二天 how can I 坚持

    最近增肥好明显,胃口好没办法,只要肚子起不来就行了.加油. 其实挺幸福,想吃啥吃啥. 鱼会不会被冻死,买了加热棒不想用,该咋办呢. 股市又跌没了一千多,还是不够睿智,不够淡定. 人活这一辈子,到底最想 ...

  2. 创建并使用Windows Azure虚拟机模板

    在现实的IaaS应用中,往往会创建自己的虚拟机映像模板,以满足快速应用部署的目标,如预先配置好某些应用.管理与监控管理等. 1.登录到Windows Azure Dashboard中创建一个做为模板的 ...

  3. SpriteParticle II

    [SpriteParticle II] 1.Randomizing the Starting Position 2.Setting the Initial Angle 3.Setting a Part ...

  4. excel分组求和

    =SUMPRODUCT((C2:C99=F2)*(B2:B99)) 说明: C2:C99=F2 找到C2到C99之间的等于F2的值 如果有多个判断条件,采用*来管理 B2:B99 求和

  5. 理解js闭包(二)

    @(编程) 一.什么是闭包? 官方"的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 相信很少有人能直接看懂这句话,因为他 ...

  6. poj 3264 Balanced Lineup(RMQ裸题)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 43168   Accepted: 20276 ...

  7. Java日期格式化

    翻译人员: 铁锚 翻译时间: 2013年11月17日 原文链接:   Simple example to show how to use Date Formatting in Java 代码示例如下, ...

  8. mongodb的查询方式与sql语句对比

    下面是sql和Mongodb对应的一些语法: SQL Statement Mongo Query Language Statement CREATE TABLE USERS (a Number, b ...

  9. Hibernate操作和保存方式

    Session API [Java Hibernate 之 CRUD 操作]http://www.codeceo.com/article/java-hibernate-crud.html   [Ses ...

  10. SAE J1708 DS36277 MAX3444, DS75176B

    http://en.wikipedia.org/wiki/J1708 J1708 SAE J1708 is a standard used for serial communications betw ...