logo资料库

用Python构建动物产生式识别系统.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
用用Python构建动物产生式识别系统 构建动物产生式识别系统 #用用Python构建动物识别系统 构建动物识别系统 构建动物识别系统需要使用字典、列表和集合,构造间接库和规则库,我的间接库和规则库的构造方法是:将特征语句通过函 数转化为一个含所有关键词的集合,然后将这个集合用一个数字作为库字典的键对应值,将这个特征词集合和对应的数字存放 在一个列表里,在查询比较时通过集合子集的关系进行动物特征集合的变化,最终求出动物名 Python代码实现如下: 代码实现如下: GuiZe=dict()#间接库的字典 ZhiJie=dict()#规则库的字典 li10=[]#存放间接库键的集合和其在字典中对应的数字键 li20=[]#存放规则库键的集合和其在字典中对应的数字键 jj=0#定位间接库字典的键 gz=0#定位规则库字典的键 def changejh(str):#将字符串转化为集合的函数 li0=set() tr="" for i in range(0,len(str)): if (str[i]!=" "): tr+=str[i] else: li0.add(tr) tr="" i+=1 return li0#返回集合 def jianjiedata(jj):#构造间接数据库 print("构建规则库:(输入0结束构建)") gz=input("请输入条件,以空格隔开:") gz+=" " while (gz!="0 "): jg=input("请输入结果:") GuiZe[jj]=jg#构造字典 li1=changejh(gz)#将条件关键词拆分在一个集合内 li10.append(li1)#将对应字典的键的集合存入列表 li10.append(jj)#将对应字典的键存入列表,位置在集合的后面 jj+=1 gz = input("请输入条件,以空格隔开:") gz=gz+" " print("间接数据库构造完成!") return jj def zhijiedata(gz):#构造直接数据库,方法同上 print("构建直接数据库:(输入0结束构建)") tj=input("请输入条件,以空格隔开:") tj+=" " while (tj!="0 "): jg=input("请输入结果:") ZhiJie[gz]=jg li2=changejh(tj) li20.append(li2) li20.append(gz) gz+=1 tj=input("请输入条件,以空格隔开:") tj=tj+" " print("直接数据库构造完成!") return gz def recarchGuiZe(animalset,li10,GuiZe):#循环动物条件,将动物条件的集合在间接库或规则库中查找,当找到相对应的值时,将值加入动物集合,用过的 条件删去 for k in range(0,len(animalset)): for i in range(0, (len(li10) - 1)): if (type(li10[i])==int): continue elif (li10[i].issubset(animalset) or li10[i]==animalset): m=(i)/2 animalset.add(GuiZe[m]) animalset=animalset-li10[i] return animalset def search():#查找动物 animal=input("请输入动物的特征:(中间用空格隔开)") animal+=" " animalset=changejh(animal)#将动物的特征化为关键词的集合 animalset=recarchGuiZe(animalset,li10,GuiZe)#返回经过间接库的过滤后的动物特征集合 resout=recarchGuiZe(animalset,li20,ZhiJie)#返回经过规则库过滤后的动物特征集合,此时,如果规则库存在此动物,则集合只剩一个值即动物的名字,否 则仍有多个特征值 action=list(resout)#将动物特征集合化为列表,便于取值 if (len(action)==1): print("这个动物是:"+action[0]) else: print("查无此动物") print("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
chose = input() while (chose!='0'): #print("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):") if (chose=='1'): jj=jianjiedata(jj) #print(li10) chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):") elif (chose=='2'): gz=zhijiedata(gz) #print(li20) chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):") elif (chose=='3'): search() chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):") else: print("输入不合法,请重新输入") chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):") 栀染 原创文章 27获赞 6访问量 1424 关注 私信 展开阅读全文 作者:栀染
分享到:
收藏