'''
这个版本用字典实现了规则的匹配,不再是以前简单的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)
动物专家系统(3)
最新推荐文章于 2023-03-10 12:45:44 发布