动物识别系统

'''

 

动物识别产生式系统

目标:

    1.用户输入指令符号,可以查询特征库、规则库

    2.用户可以根据特征识别动物

 

'''

 

 

class AnimalSystem:

    def __init__(self):

        # 目标动物

        self.target_animals = ['金钱豹', '虎', '长颈鹿', '斑马', '鸵鸟', '企鹅', '信天翁']

 

        # 规则库

        self.rules = [

            ['毛发', '哺乳动物', False], # False表示还未匹配成功

            ['奶', '哺乳动物', False],

            ['羽毛', '鸟', False],

            ['会飞&会下蛋', '鸟', False],

            ['吃肉', '肉食动物', False],

            ['有犬齿&有爪&眼盯前方', '食肉动物', False],

            ['哺乳动物&有蹄', '蹄类动物', False],

            ['哺乳动物&反刍动物', '蹄类动物', False],

            ['哺乳动物&食肉动物&黄褐色&暗斑点', '金钱豹', False],

            ['哺乳动物&食肉动物&黄褐色&黑色条纹', '虎', False],

            ['蹄类动物&长脖子&长腿&暗斑点', '长颈鹿', False],

            ['有蹄类动物&黑色条纹', '斑马', False],

            ['鸟&长脖子&长腿&不会飞&黑白二色', '鸵鸟', False],

            ['鸟&会游泳&不会飞&黑白二色', '企鹅', False],

            ['鸟&会飞', '信天翁', False]

 

        ]

 

        self.data = [] # 综合数据库

        self.flag = False # 是否找到了, 终于判断程序终止

        self.maxdepth = 50 # 最大搜索次数

        self.result = '' # 结论

 

    def print_rules(self):

        # 输出规则

        for i in range(len(self.rules)):

            print(i, ':由', self.rules[i][0], ',可以得到:', self.rules[i][1])

 

    def search(self):

        # 执行单次搜索

        for i in range(len(self.rules)):

            # 没有匹配成功的执行

            if not self.rules[i][2]:

                relu = self.rules[i][0].split('&')

                count = 0 # 计数,判断relu中的项是否都在综合数据库中

                for j in relu:

                    if j in self.data:

                        count += 1

                if count == len(relu): # 匹配成功了

                    res = self.rules[i][1] # 取出当前规则对应的结论

                    if res in self.target_animals: # 结论是否在目标的动物里面

                        self.flag = True # 更新找到的标记

                        self.result = res

                        break # 终止循环i

                    else: # 匹配成功,但不是结论

                        self.data.append(res)

                        self.rules[i][2] = True

 

 

if __name__ == '__main__':

    animal = AnimalSystem()

    animal.print_rules()

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值