'''
這個版本用函式實現了功能上的擴充套件,可以修改、新建、刪除規則。
另外,對特徵進行排序,使得輸入的特徵不再需要按順序來。
'''def init():
with open("/users/he-jia/dongwushibie/gui_ze.txt","r+") as f:
for line in f.readlines():
if(line!='\n'):
line=line.split()
for each in gui_ze:
print('\n現在可以識別的動物如下:\n')
for i in all_animals:
print(i + ' ',end='')
for each in te_zheng:
for i in each:
if not i in all_features:
features_dic = dict(zip(all_features,range(len(all_features))))
you_xu_te_zheng_list =
for each in te_zheng:
a =
for i in each:
new_you_xu_te_zheng_list=
for each in you_xu_te_zheng_list:
each.sort()
new_each = str(each)
dic = dict(zip(new_you_xu_te_zheng_list,animal_name))
print('\n\n所有的特徵有:\n')
for i in range(len(all_features)):
if((i+1)%5 == 0):
print(('%d'%(i) +'、'+all_features[i]),end =' ')
print('\n')
else:
print(('%d'%(i) +'、'+all_features[i]),end =' ')
return dic,all_features,all_animals
def shi_bie_dong_wu():
print('\n')
flag3 = true
while(flag3):
answer = input('請輸入要識別的動物的特徵編號,用空格分開,回車結束輸入:') # 接收到的answer是乙個字串
try:
answer = list(answer.split()) # 字串先變成列表
new_answer = [int(x) for x in answer] #再將列表中的每乙個『1』變成數字1
new_answer.sort() #再排序
flag3 = false
except exception:
print('\n您輸入的對麼?\n')
result = dic.get(str(new_answer),'找不到')
print('\n識別結果是:'+result)
print('\n')
def xiu_gai_gui_ze():
animal =input('\n請問您需要修改哪個動物的規則?\n')
with open("/users/he-jia/dongwushibie/gui_ze.txt","a+") as f:
f.seek(0,0)
lines = f.readlines()
flag =1
for line in lines:
if animal in line:
print('\n現有規則如下:\n')
print(line)
flag =2
break
if(flag == 1):
print('\n沒有關於這個動物的規則!\n')
if(flag ==2):
shan_chu_gui_ze(animal)
zeng_jia_gui_ze()
def zeng_jia_gui_ze():
user_input = input('\n請按照如下類似格式增加規則:\n'
'食肉類 黃褐色 有黑色條紋 虎\n')
with open("/users/he-jia/dongwushibie/gui_ze.txt","a+") as f:
f.write('\n')
f.write(user_input)
print('\n增加成功!\n')
def shan_chu_gui_ze(animal):
import shutil
with open("/users/he-jia/dongwushibie/gui_ze.txt","a+") as f:
f.seek(0,0)
lines = f.readlines()
with open("/users/he-jia/dongwushibie/gui_ze1.txt","a+") as f_new:
for line in lines:
if line =='\n':
continue
if animal in line:
continue
f_new.write(line)
shutil.move('/users/he-jia/dongwushibie/gui_ze1.txt','/users/he-jia/dongwushibie/gui_ze.txt')
print('\n刪除成功!\n')
def cha_kan_gui_ze():
print('\n現有規則如下:\n')
with open("/users/he-jia/dongwushibie/gui_ze.txt","r") as f:
f.seek(0,0)
lines = f.readlines()
for line in lines:
if line =='\n':
continue
else:
print(line)
def main():
flag2 = true
while(flag2):
select = input('\n\n請選擇您要進行的操作:\n'
'1 識別動物\n'
'2 修改現有規則\n'
'3 增加規則\n'
'4 刪除現有規則\n'
'5 檢視規則\n'
'6 退出\n\n'
'請輸入數字編號,回車結束\n')
try:
new_select = int(select)
if new_select in [1,2,3,4,5,6]:
flag2 = false
else:
print('\n您輸入的數字對麼?\n')
except exception:
print('\n您輸入的是數字麼?\n')
if new_select == 1:
shi_bie_dong_wu()
elif new_select == 2:
xiu_gai_gui_ze()
elif new_select == 3:
zeng_jia_gui_ze()
elif new_select == 4:
flag1 = 1
while(flag1 == 1):
animal =input('\n請問您需要修改哪個動物的規則?\n')
if not animal in all_animals:
print('\n您輸入的動物名稱有誤!請重新輸入\n')
if animal in all_animals:
flag1 = 2
shan_chu_gui_ze(animal)
elif new_select == 5:
cha_kan_gui_ze()
else:
pass
if __name__ == '__main__':
gui_ze= # 儲存的是全體規則
te_zheng= # 儲存的是全體特徵,
animal_name= # 儲存全體可以識別的動物名稱
new_te_zheng =
dic = {}
all_features =
all_animals =
dic, all_features,all_animals = init()
main()
《專家系統》實驗(初稿)
今天硬是被趕鴨子上架了一把,mm非要我幫她寫乙份 專家系統 的實驗報告冊。這可真的是難為我了,花了幾個小時擬了初稿出來。哎 書到用是方恨少 這句是真理!不管寫得有多爛,先發上來讓各路ggjj給咱提點意見。我對專家系統的理解還很膚淺,這次拍腦袋,真是哦 大家多幫幫忙啦 專家系統 實驗 專家系統是早期人...
專家系統JESS例項教程
我們假設有乙個交易系統,客戶提出要買的東西,賣家提供要買的東西,如果有符合的,就成交。這是乙個很簡單的系統,用一般程式語言也可以實現,但是我們看看專家系統開發更簡單的方法。1第一條規則 如果來了新的客戶,取得這個客戶所有需要的商品,並產生新的事實。defrule query buyer fact n...
專家系統JESS例項教程
我們假設有乙個交易系統,客戶提出要買的東西,賣家提供要買的東西,如果有符合的,就成交。這是乙個很簡單的系統,用一般程式語言也可以實現,但是我們看看專家系統開發更簡單的方法。1第一條規則 如果來了新的客戶,取得這個客戶所有需要的商品,並產生新的事實。defrule query buyer fact n...