Python动物识别系统,明明输入了特征但是依旧显示无法识别,不知道怎么回事。
#判断有无重复元素
def judge_repeat(value,list=[]):
for i in range(0,len(list)):
if(list[i]==value):
return 1
else:
if(i!=len(list)-1):
continue
else:
return 0
#对综合数据库进行结果判断
def judge_animal(list):
for i in list:
if(i=='23'): #食肉
for i in list:
if(i=='12'): #黄褐色
for i in list:
if(i=='21'): #哺乳类
for i in list:
#老虎和金钱豹的差异唯一在于有斑点和有黑色条纹上。
if(i=='13'): #有斑点
print("黄褐色,有斑点,哺乳类,食肉类->金钱豹\n")
print("所识别的动物为金钱豹")
return 0
elif(i=='14'): #有黑色条纹
print("黄褐色,有黑色条纹,哺乳类,食肉类->虎\n")
print("所识别的动物为老虎")
return 0
#斑马与与长颈鹿都为蹄类动物
elif(i=='24'): #蹄类
for i in list:
#判断斑马
if(i=='14'): #有黑色条纹
print("有黑色条纹,蹄类->斑马\n")
print("所识别的动物为斑马")
return 0
#判断长颈鹿
elif(i=='13'): #有斑点
for i in list:
if(i=='15'): #长脖子
for i in list:
if(i=='16'):
print("有斑点,有黑色条纹,长脖子,蹄类->长颈鹿\n")
print("所识别的动物为长颈鹿")
return 0
elif(i=='22'):#鸟类
for i in list:
if(i=='4'):
for i in list:
if(i=='15'):
for i in list:
if(i=='16'):
print("不会飞,长脖,长腿,鸟类->鸵鸟\n")
print("所识别的动物为鸵鸟")
return 0
elif(i=='18'):
for i in list:
if(i=='19'):
print("不会飞,会游泳,黑白二色,鸟类->企鹅\n")
print("所识别的动物企鹅")
return 0
elif(i=='23'):
if(i=='22'):
if(i=='8'):
if(i=='20'):
print("食肉类,鸟类,有爪,善飞->鹰\n")
print("所识别的动物鹰")
return 0
else:
if(list.index(i) != len(list)-1):
continue
else:
#如果未找到则输出“根据所给条件无法判断为何种动物”
print("\n根据所给的初始条件无法判断该动物是什么动物")
#以键值对(K-V)的形式存储相关的特征列表信息,1-24为特征值;25-31为判断的动物
dict_before={'1':'有毛发','2':'产奶','3':'有羽毛','4':'不会飞','5':'会下蛋','6':'吃肉','7':'有犬齿',
'8':'有爪','9':'有喙','10':'有蹄','11':'反刍','12':'黄褐色','13':'有斑点','14':'有黑色条纹',
'15':'长脖子','16':'长腿','17':'高飞','18':'会游泳','19':'黑白二色','20':'善飞','21':'哺乳类',
'22':'鸟类','23':'食肉类','24':'蹄类','25':'金钱豹','26':'虎','27':'长颈鹿','28':'斑马',
'29':'鸵鸟','30':'企鹅','31':'鹰,'}
#用于提示用户输入相应的数字
print("--------------------------------------------------【动物识别系统】---------------------------------------")
print('''请输入特征条件前面的数字(具体对应如下):
[ 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("-------------------------------------------- 【输入Q或q退出!!!!!】----------------------------------")
#综合数据库
list_real=[]
#循环输入前提条件所对应的字典中的键
while(1):
num_real=input("请输入:")
list_real.append(num_real)
if(num_real=='Q' or num_real=='q'): #当输入Q或q实现退出判断
break
print("\n")
#输出前提条件
print("前提条件为:")
for i in range(0,len(list_real)-1):
print(dict_before[list_real[i]],end=" ")
print("\n")
print("推理过程如下:")
#遍历综合数据库list_real中的前提条件
for i in list_real:
if(i=='1'):
if(judge_repeat('21',list_real)==0):
list_real.append('21')
print("有毛发->哺乳动物")
elif(i=='2'):
if(judge_repeat('21',list_real)==0):
list_real.append('21')
print("产奶->哺乳动物")
elif(i=='3'):
if(judge_repeat('22',list_real)==0):
list_real.append('22')
print("有羽毛->鸟类")
elif(i=='9'):
if(judge_repeat('22',list_real)==0):
list_real.append('22')
print("有喙->鸟类")
else:
if(list_real.index(i) !=len(list_real)-1):
continue
else:
break
for i in list_real:
if(i=='4'):
for i in list_real:
if(i=='5'):
if(judge_repeat('22',list_real)==0):
list_real.append('22')
print("不会飞,会下蛋->鸟类")
elif(i=='6'):
for i in list_real:
if(i=='21'):
if(judge_repeat('21',list_real)==0):
list_real.append('21')
print("食肉->哺乳类")
elif(i=='7'):
for i in list_real:
if(i=='8'):
for i in list_real:
if(i=='9'):
if(judge_repeat('23',list_real)==0):
list_real.append('23')
print("有犬齿,有爪,眼盯前方->食肉类")
elif(i=='10'):
for i in list_real:
if(i=='21'):
if(judge_repeat('24',list_real)==0):
list_real.append('24')
print("有蹄,哺乳类->蹄类")
elif(i=='11'):
for i in list_real:
if(i=='21'):
if(judge_repeat('24',list_real)==0):
list_real.append('24')
print("反刍,哺乳类->哺乳类")
else:
if(i !=len(list_real)-1):
continue
else:
break
judge_animal(list_real) #调用前面的judge_animal函数,实现结果