天津 网站设计,广西建设厅网站在线服务,学做软件的网站,wordpress关于本站目录 实验目的#xff1a;
实验代码#xff1a;
实验内容#xff1a;
实验结果 实验目的#xff1a;
输入相应的条件#xff0c;根据知识库推理得出相应的知识。
实验代码#xff1a;
def find_data(input_process_data_list):for epoch, data_process in enumerat…
目录 实验目的
实验代码
实验内容
实验结果 实验目的
输入相应的条件根据知识库推理得出相应的知识。
实验代码
def find_data(input_process_data_list):for epoch, data_process in enumerate(data_process_list):number 0for i in input_process_data_list:if i in data_process:number 1if number len(data_process):if data_result_list[epoch] not in result_list:# 弹出前提和此过程结论因为该过程已经推理过过此结果存入需要查找的过程中result data_result_list.pop(epoch)process data_process_list.pop(epoch)# 判断临时结论是否已经存在中存在则重新寻找不存在则加入到字典中并将其存入推导结果if result not in input_process_data_list:dict_input[.join(process)] result#键为前提值为结果end_result find_data(input_process_data_list [result])if end_result 1:return 1else:return 0# 存在则直接寻找else:end_result find_data(input_process_data_list)if end_result 1:return 1else:return 0# 已经是动物结果取出结果后返回else:process data_process_list.pop(epoch)dict_input[.join(process)] data_result_list[epoch]return 1if __name__ __main__:# 存储IF前提data_process_list []# 存储THEN结果data_result_list []# 存储用于查询的数据list_data []# 用于存储输出结果dict_input {}# 规则库txt 有毛发哺乳类
产奶哺乳类
有羽毛鸟类
会飞会下蛋鸟类
吃肉食肉类
有犬齿有爪眼盯前方食肉类
哺乳类有蹄蹄类
哺乳类反刍蹄类
哺乳类食肉类黄褐色有斑点金钱豹
哺乳类食肉类黄褐色有黑色条纹虎
蹄类长脖长腿有斑点长颈鹿
蹄类有黑色条纹斑马
鸟类长脖长腿不会飞黑白二色鸵鸟
鸟类会游泳不会飞黑白二色企鹅
鸟类善飞信天翁# 将数据预处理datas txt.split(\n)for data in datas:data data.split()data_process_list.append(data[:-1])data_result_list.append(data[-1].replace(\n, ))# 最终结果列表result_list [信天翁, 鸵鸟, 斑马, 长颈鹿, 虎, 金钱豹, 企鹅]# 数据库对应的过程database {1: 有毛发, 2: 产奶, 3: 有羽毛, 4: 会飞, 5: 会下蛋, 6: 吃肉, 7: 有犬齿,8: 有爪, 9: 眼盯前方, 10: 有蹄, 11: 反刍, 12: 黄褐色,13: 有斑点, 14: 有黑色条纹,15: 长脖, 16: 长腿, 17: 不会飞, 18: 会游泳, 19: 黑白二色, 20: 善飞,21: 哺乳类,22: 鸟类, 23: 食肉类, 24: 蹄类}# 打印顶部星号边框print(****************************** 输入对应条件前面的数字: ******************************\n)# 打印数据库内容每6个一行保持对齐for i, (key, value) in enumerate(database.items(), 1):if i % 6 1: # 每6个一行print(*,end)print(f{key}:{value:8}, end ) # 保持每列宽度相同对齐if i % 6 0: # 每6个一行print( *) # 换行并加上右侧的星号if len(database) % 6 ! 0:print( *) # 如果最后一行不足6个也加上右侧的星号# 打印底部星号边框和提示信息print(**********************************************************************************)print(****************************** 当输入数字0时程序结束 ******************************\n)# 循环输入遇0退出while 1:print(请输入,end)term input()if term 0:breakif database[term] not in list_data:list_data.append(database[term])# 打印前提条件print(前提条件为)print( .join(list_data) \n)# 进行递归查找直到找到最终结果,返回1则找到最终结果end_result find_data(list_data)if end_result 1:print(推理过程如下)# 将结果进行打印for i in dict_input.keys():print(f{i}-{dict_input[i]})# 得到最终结果即输出所识别动物if dict_input[i] in result_list:print()print(f所识别的动物为{dict_input[i]})else:# 将结果进行打印for i in dict_input.keys():print(f{i}-{dict_input[i]})实验内容
首先将已知的动物特征及其对应的种类整理成规则库。规则库中的每一条规则都包含两部分前提动物的特征和结果动物的种类。 然后通过命令行界面用户可以输入一系列动物的特征。这些特征从规则库中的前提部分选取并通过数字进行标识。用户输入的特征被存储在一个列表中作为推理系统的输入
推理过程采用递归方法。首先将用户输入的特征列表作为输入参数传递给递归函数。函数遍历规则库中的每一条规则检查当前特征列表是否满足规则的前提部分。如果满足则进一步检查该规则的结果是否已经在之前的结果列表中。如果结果不在结果列表中则将该结果添加到输入特征列表中并继续递归调用函数进行推理。如果找到满足所有条件的动物种类则停止递归并返回结果。 推理完成后系统输出推理过程及最终结果。推理过程以键值对的形式展示最终结果是满足所有输入特征的动物种类。 实验结果