python实现动物知识推理

基于python实现动物知识推理

dict1={'1':'有毛发','2':'产奶','3':'有羽毛','4':'会飞','5':'会下蛋','6':'吃肉','7':'有犬齿',
             '8':'有爪','9':'眼盯前方','10':'有蹄','11':'反刍','12':'黄褐色','13':'有斑点','14':'有黑色条纹',
             '15':'长脖','16':'长腿','17':'不会飞','18':'会游泳','19':'黑白二色','20':'善飞','21':'哺乳类',
             '22':'鸟类','23':'食肉类','24':'蹄类','25':'金钱豹','26':'虎','27':'长颈鹿','28':'斑马',
             '29':'鸵鸟','30':'企鹅','31':'信天翁'}#存放字母及其意义
dictlist=[{"21":["1"]},{"21":["2"]},{"22":["3"]},{"22":["4","5"]},{"23":["21","6"]},{"23":["7","8","9"]},{"23":["21","10"]},{"24":["21","11"]},{"25":["21","23","12","13"]},{"26":["21","23","12","14"]},{"27":["24","15","16","13"]}]#存放规则;
result=[]#存放结果
feature=[]#存放特征
def repeatlist(list1,list2):
    for item1 in list1:
        if item1 not in list2:
            return False
    return True
def Analysis():
    global feature
    global dictlist
    flag=1
    while flag==1:
        for i in range(0,len(dictlist)):
            flag=0
            for key,value in dictlist[i].items():
                if(repeatlist(value,feature)):
                    flag=1
                    result.append(key)
                    feature.append(key)
                    del dictlist[i]
                    feature=list(set(feature))
                    break
            if flag==1:
                break
def traittransform(list1,list2):
    global dict1
    for key,value in dict1.items():
        for item in list1:
            if value==item:
                list2.append(key)
    if len(list1)!=len(list2):
        print("您的输入不符合要求")
        return False
    else:
        return True
if __name__ == '__main__':
    print("请输入特征的个数\n")
    tempory=[]#暂时存放特征
    num=int(input())
    for i in range(0,num):
        print("请输入第"+str(i+1)+"个特征")
        trait=input()
        tempory.append(trait)
    if traittransform(tempory,feature):
        Analysis()
        print("推理的结果为",dict1[result[-1]])
    #feature=["1","23","12","14"]




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值