動物專家系統(4)

2021-08-30 17:36:13 字數 4364 閱讀 2670

'''

這個版本用函式實現了功能上的擴充套件,可以修改、新建、刪除規則。

另外,對特徵進行排序,使得輸入的特徵不再需要按順序來。

'''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...