首页 > 解决方案 > 身份或非身份矩阵

问题描述

所以基本上我想编写一个程序来使用列表显示矩阵并打印出矩阵是否是单位矩阵。

R = int(input('Enter no. of rows:'))
C = int(input('Enter no of columns:'))
print('Enter row wise entries:')
Mat = []
for i in range(R):
    a = []
    for j in range(C):
        a.append(int(input()))
    Mat.append(a)
for i in range(R):
    for j in range(C):
        print(Mat[i][j], end=' ')
    print()
for i in range(R):
    for j in range(C):
        if i != j and Mat[i][j] != 0 or i == j and Mat[i][j] == 1:
            break      
print('Identity Matrix')

我能够打印出矩阵,但无法正确检查它是否是一个身份。请检查我的代码并告诉我出了什么问题。

标签: python

解决方案


您的解决方案似乎真的很接近我!

我唯一会改变的是:

  • 检查列数是否==行数
  • 在 if 语句的第二部分检查每个元素是否检查 i==j 和 Mat[i][j] == 1,但正确检查不是身份的矩阵应该是 Mat[i][j] != 1
  • 在您所做的检查中添加一个标志以跟踪矩阵是否是同一性的
R = int(input('Enter no. of rows:'))
C = int(input('Enter no of columns:'))
print('Enter row wise entries:')
Mat = []
for i in range(R):
    a = []
    for j in range(C):
        a.append(int(input()))
    Mat.append(a)
for i in range(R):
    for j in range(C):
        print(Mat[i][j], end=' ')
    print()
isIdentity = True
if C == R: # change 1
    for i in range(R):
        for j in range(C):
            if (i != j and Mat[i][j] != 0) or (i == j and Mat[i][j] != 1): # change 2
                isIdentity = False # change 3
                break
else:
    isIdentity = False
if isIdentity:   
    print('Identity Matrix')
else:
    print('Not Identity Matrix')

推荐阅读