动物专家系统(3)

'''
这个版本用字典实现了规则的匹配,不再是以前简单的if else判断,但是输入仍然是要有顺序的,还是没有用函数
'''

with open("/Users/he-jia/dongwushibie/gui_ze.txt","r+") as f:
    gui_ze=[]     # 保存的是全体规则
    te_zheng=[]       #  保存的是全体特征名词
    animal_name=[]   # 保存全体可以识别的动物名称
    new_te_zheng = []
    dic = {}
    all_features =[]
    all_animals =[]

    for line in f.readlines():  
        if(line!='\n'):
            line=line.split()    # 最终得到了一个每行名词的列表
            gui_ze.append(line)     
    for each in gui_ze:
        te_zheng.append(each[:-1])
        animal_name.append(each[-1])
    
    [all_animals.append(i) for i in animal_name if not i in all_animals]
    for each in te_zheng:
        for i in each:
            if not i in all_features:
                all_features.append(i)
                
    for each in te_zheng:
        new_each = str(each)
        new_te_zheng.append(new_each)
    
    dic = dict(zip(new_te_zheng,animal_name))

    print('所有的特征有:\n')
    for i in range(len(all_features)):
        if((i+1)%5 == 0):
            print(('%d'%(i+1) +'、'+all_features[i]),end ='     ')
            print('\n')
        else:
            print(('%d'%(i+1) +'、'+all_features[i]),end ='     ')

    print('\n')
    flag = True
    while(flag):
        answer = input('请选择动物的特征编号,用空格分开,回车结束输入:')      # 接收到的answer是一个字符串
        try:
            answer = list(answer.split())    # 字符串先变成列表
            new_answer = [int(x) for x in answer]   #再将列表中的每一个‘1’变成数字1
            flag = False
        except Exception:
            print('您输入的是数字么?')
    
    predict_features =[]
    for i in new_answer:
        predict_features.append(all_features[i])
        
    result = dic.get(str(predict_features),'找不到')
    print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值