课程实验:产生式系统
首先搭建一个简单的知识库,这个知识库包含一些基本的类及与这些类相对应的若干特征值。可以通过这些类查看对应类的特征,也可以通过对应类的特征找到符合输入特征的类。同时这个类还要可以进行不断的更新完善。

代码:
`
created by:spelatm
`
#用pandas库中的dataframe模块实现产生式知识系统
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1,1,0,0,0,1,1], [1,1,1,0,0,1,1], [1,1,1,0,0,1,0],[1,1,1,0,0,2,0],[1,0,1,1,1,3,0],[1,0,0,1,1,0,1],[0,0,1,1,0,0,1]]),
index=[‘熊猫’, ‘老虎’, ‘熊’,’狮子’,’鹰’,’鸽子’,’蛇’],
columns=[‘毛发’,’哺乳’,’食肉’,’下蛋’,’会飞’,’生活地区’,’斑纹’])
print(df)
print(‘\n’)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
while(chose!=’0′):
if(chose==’1′):
y=input(“请输入该动物种类:”)
g1=list(df.columns)
g2=list(df.index)
if y not in g2:
#print(df.loc[y])
print(‘数据库中没有这个动物.’)
print(‘请重新输入’)
continue
k=list(df.loc[y])
length=len(k)
print(‘\n’)
for i in range(length):
if g1[i]!=’生活地区’:
if k[i]==0:
print(g1[i]+”:否”)
if k[i]==1:
print(g1[i]+”:是”)
elif g1[i]==’生活地区’:
if k[i]==0:
print(‘无固定生活区域’)
elif k[i]==1:
print(“生活在森林地区”)
elif k[i]==2:
print(‘生活在草原地区’)
elif k[i]==3:
print(‘生活在山区’)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
elif(chose==’2′):
g1=list(df.columns)
g2=list(df.index)
dd=df
print(dd)
print(type(dd))
for i in range(len(g1)):
if len(dd)==1:
break
#if i==len(g1)-1:
# print(“符合输入特征的所有动物:”)
print(‘是否有该特征:’+g1[i])
print(‘有该特征输入1,无该特征输入0 \n(在生活地区中,0代表无确定生活地区,1代表生活在森林地区,2代表生活在草原地区,3代表生活在高山地)’)
y=input(‘请输入:’)
print(‘\n’)
print(‘这是符合您输入的特征要求的动物:’)
print(dd.loc[dd[g1[i]]==int(y)])
dd=dd.loc[dd[g1[i]]==int(y)]
if dd.empty==True:
print(‘不知道该动物是什么’)
break
print(‘\n’)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
elif (chose==’3′):
g1=list(df.columns)
y=input(‘请输入要添加的动物种类名称:’)
df.loc[y]=0
print(‘有该特征输入1,无该特征输入0 \n(在生活地区中,0代表无确定生活地区,1代表生活在森林地区,2代表生活在草原地区,3代表生活在高山地)’)
print(‘\n’)
for i in range(len(g1)):
print(g1[i])
c=input()
df.at[y,g1[i]]=int(c)
print(df)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
elif (chose==’4′):
g2=list(df.index)
y=input(‘请输入要添加的特征:’)
df[y]=0
print(‘该动物有此特征为1,无该特征为0\n’)
for i in range(len(g2)):
print(g2[i])
c=input()
df.at[g2[i],y]=int(c)
print(df)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
elif (chose==’5′):
g1=list(df.columns)
g2=list(df.index)
print(“当前已收录的动物种类有:”)
print(g2)
x=input(“请选择您要修改的动物种类:”)
print(“当前已整理的动物特征有:”)
print(g1)
y=input(“请选择您要修改的动物特征:”)
c=input(“该动物有此特征为1,无该特征为0:”)
df.at[x,y]=int(c)
print(df)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)
else:
print(“输入不合法,请重新输入”)
chose=input(“请输入接下来操作(1.查看某个动物特征 2.根据一些特征查找动物 3.增加新的动物种类 4.增加动物的特征 5.修改某动物的特征 0.结束操作):”)

运行结果:

%title插图%num
一些功能展示:
查找某类动物的特征

 

%title插图%num修改某个特征

%title插图%num