python编程题计算矩阵对角线_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肯定已經準備好了什么函數或方法,可以輕松計算矩陣。容我有空好好搜索一番,再來更新。
++++++++++++++++++++++++++++++++++++++
原文:http://www.cnblogs.com/iderek/p/5978918.html
總結
以上是生活随笔為你收集整理的python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jlabel字怎么变化_怎样才能把字写好
- 下一篇: php的在线问卷调查_基于php技术的问