离散数学实验(一)
1、介绍
函数功能为判断任意一个关系是否为函数,若是函数,判定其是否为单射、满射或双射,使用Python实现。本文内容包含了具体代码以及测试。
2、具体代码
# 判断一个关系是不是函数,如是判断其为单射、双射还是满射
# 输入:两个集合,两个集合的关系(序偶)
# 输出:输出判断结果
def typeJudge(X, Y, f):
flag3 = len(set(f.values())) == len(f.values())
flag4 = (sorted(Y) == sorted(list(set(f.values()))))
if flag3 and flag4:
print("该函数是双射")
elif flag3:
print("该函数是单射")
elif flag4:
print("该函数是满射")
else:
print("该函数既不是单射也不是满射")
def funcJudge(X, Y, f, li):
flag1 = (set(X) == set(f.keys()))
flag2 = (len(li) == len(f))
# print(flag1, flag2)
if flag1 and flag2:
typeJudge(X, Y, f)
elif flag1:
print("该关系不是函数,与x对应的值不唯一")
elif flag2:
print("该关系不是函数,定义域X元素未取完")
if __name__ == '__main__':
X = list(eval(input("请输入集合X,用逗号隔开:")))
Y = list(eval(input("请输入集合Y,用逗号隔开:")))
print("请输入序偶对,用逗号隔开,以“0,0”结束:")
relation = {}
li = []
while True:
temp = list(eval(input()))
if temp[0] != 0 and temp[1] != 0:
relation[temp[0]] = temp[1]
li.append(temp[0])
else:
break
funcJudge(X, Y, relation, li)
3、测试
(1)测试一
输入:
集合A:{1,2}
集合B:{3,4,5}
关系(序偶):<1,3>, <2,4>, <2,5>
测试结果:
(2)测试二
输入:
集合A:{1,2,3}
集合B:{4,5}
关系(序偶):<1,4>, <2,5>
测试结果:
(3)测试三
输入:
集合A:{1,2,3}
集合B:{4,5}
关系(序偶):<1,4>, <2,4>, <2,5>
测试结果:
(4)测试四
输入:
集合A:{1,2}
集合B:{3,4,5}
关系(序偶):<1,3>, <2,4>
测试结果:
(5)测试五
输入:
集合A:{1,2,3}
集合B:{4,5}
关系(序偶):<1,4>, <2,5>, < 3,5>
测试结果:
(6)测试六
输入:
集合A:{1,2,3}
集合B:{4,5,6}
关系(序偶):<1,4>, <2,5>, < 3,6>
测试结果:
(7)测试七
输入:
集合A:{1,2,3}
集合B:{4,5,6}
关系(序偶):<1,4>, <2,5>, < 3,5>
测试结果: