扫描二维码关注公众号,回复:
15121074 查看本文章
所有的情况都讲完了,下面上完整的示范代码(没有numpy库记得pip install numpy):
import numpy as np
class RelationMatrix():
def __init__(self):
self.matrix = None
def getMatrix(self):
GUIDANCE = """请以字符串形式输入关系矩阵,输入python列表形式的字符串,如:
|1,0,1|
|1,0,0|
|0,0,0|
则输入:[[1,0,1],[1,0,0],[0,0,0]]
输入数据时不要换行!
"""
print(GUIDANCE)
self.matrix = np.array(eval(input("请输入关系矩阵:")))
print(self.matrix)
def isReflexive(self):
if (self.matrix.diagonal() == 1).all():
return True
else:
return False
def isAntiReflexive(self):
if (self.matrix.diagonal() == 0).all():
return True
else:
return False
def isSymmetry(self):
if (self.matrix.T == self.matrix).all():
return True
else:
return False
def isAntiSymmetric(self):
matrix = self.matrix.copy()
np.fill_diagonal(matrix, 0)
product = matrix * matrix.T
if np.count_nonzero(product) == 0:
return True
else:
return False
def isTransitive(self):
indexes = (np.argwhere(self.matrix == 1)).tolist()
for i in indexes:
for j in indexes:
if ((i[1] == j[0]) and ([i[0], j[1]] not in indexes)):
return False
return True
def judgeRelationship(self):
try:
self.getMatrix()
if self.isReflexive():
print("该矩阵是自反的")
if self.isAntiReflexive():
print("该矩阵是反自反的")
if self.isSymmetry():
print("该矩阵是对称的")
if self.isAntiSymmetric():
print("该矩阵是反对称的")
if self.isTransitive():
print("该矩阵是传递的")
except Exception as err:
print(err)
print("输入内容不合法,请核对后重试!")
if __name__ == '__main__':
rm = RelationMatrix()
rm.judgeRelationship()
运行效果图:
更多numpy使用教程:numpy中文文档
如有疑惑,留言解答
如有错误,联系更正
如有侵权,联系删除