猫狗队列问题python实现

#File Name : 猫狗队列问题.py

class Dog(object):
    def __init__(self,name):
        self.name = name
        self.cls = 'dog'

    def setcount(self,num):
        self.count = num

    def getcount(self):
        return self.count
class Cat(object):
    def __init__(self, name):
        self.name = name
        self.cls = 'cat'

    def setcount(self, num):
        self.count = num

    def getcount(self):
        return self.count

class PetEnter(object):
    def __init__(self):
        self.Dogqueue = []
        self.Catqueue = []
        self.count = 0
    def add(self,pet):
        if pet.cls == 'dog':
            self.Dogqueue.append(pet)
            self.count+=1
            pet.setcount(self.count)
        elif pet.cls == 'cat':
            self.Catqueue.append(pet)
            self.count+=1
            pet.setcount(self.count)
        else:
            raise Exception('it must be dog or cat')
    def pollAll(self):
        if not self.is_catempty() and not self.is_dogempty():
            if self.Dogqueue[0].getcount() < self.Catqueue[0].getcount():
                polldog = self.Dogqueue.pop(0)
                return polldog.name,polldog.getcount()
            else:
                pollcat = self.Catqueue.pop(0)
                return pollcat.name,pollcat.getcount()
        elif self.is_catempty():
            polldog = self.Dogqueue.pop(0)
            return polldog.name, polldog.getcount()
        elif self.is_dogempty():
            pollcat = self.Catqueue.pop(0)
            return pollcat.name, pollcat.getcount()
        else:
            raise Exception('both if empty')
    def pollDog(self):
        if self.is_dogempty():
            raise Exception('dog is empty')
        a = self.Dogqueue.pop(0)
        return a.name,a.getcount
    def pollcat(self):
        if self.is_catempty():
            raise Exception('cat is empty')
        a = self.Catqueue.pop(0)
        return a.name,a.getcount
    def is_empty(self):
        if not self.Dogqueue and not self.Catqueue:
            return True
        else:
            return False
    def is_dogempty(self):
        if not self.Dogqueue:
            return True
        else:
            return False
    def is_catempty(self):
        if not self.Catqueue:
            return True
        else:
            return False
    def show(self):
        if not self.is_dogempty():
            print('dogqueue')
            for i in self.Dogqueue:
                print(i.name,i.getcount(),end='')
            print('')
        if not self.is_catempty():
            print('catqueue')
            for i in self.Catqueue:
                print(i.name,i.getcount(),end='')
            print('')

if __name__ == "__main__":
    dog1 = Dog('dog1')
    cat1 = Cat('cat1')
    dog2 = Dog('dog2')
    cat2 = Cat('cat2')
    dog3 = Dog('dog3')
    cat3 = Cat('cat3')

    bigqueue = PetEnter()
    bigqueue.add(dog1)
    bigqueue.add(cat1)
    bigqueue.add(dog2)
    bigqueue.add(cat2)
    bigqueue.add(dog3)
    bigqueue.add(cat3)
    print('当前入队情况')
    bigqueue.show()
    a = bigqueue.pollAll()
    print(a)
    b = bigqueue.pollAll()
    print(b)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值