猫狗队列问题-python3

 * 猫狗队列 :
 * 用户可以调用add方法将cat类或dog类的 实例放入队列中;
 * 用户可以调用pollAll方法,将队列中所有的实例按照进队列 的先后顺序依次弹出;
 * 用户可以调用pollDog方法,将队列中dog类的实例按照 进队列的先后顺序依次弹出;
 * 用户可以调用pollCat方法,将队列中cat类的实 例按照进队列的先后顺序依次弹出;
 * 用户可以调用isEmpty方法,检查队列中是 否还有dog或cat的实例; 用户可以调用isDogEmpty方法,
 * 检查队列中是否有dog 类的实例; 用户可以调用isCatEmpty方法,检查队列中是否有cat类的实例

代码如下:

#准备两个队列
class Dog(object):
    def __init__(self,name):
        self.name=name
        self.cls="dog"
    def setCount(self,count):
        self.setcount=count
    def getCount(self):
        return self.setcount
class Cat(object):
    def __init__(self,name):
        self.name=name
        self.cls="cat"
    def setCount(self,count):
        self.setcount=count
    def getCount(self):
        return self.setcount
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 a 'dog' or 'cat'")
    def pollAll(self):
        if (not self.is_CatEmpty()) and (not self.is_DogEmpty()):
            if self.catqueue[0].getCount() < self.dogqueue[0].getCount():
                c=self.catqueue.pop(0)
                return c.name,c.getCount()
            else:
                d=self.dogqueue.pop(0)
                return d.name,d.getCount()
        elif self.is_CatEmpty():
            d=self.dogqueue.pop(0)
            return d.name,d.getCount()
        elif self.is_DogEmpty():
            c=self.catqueue.pop(0)
            return c.name,c.getCount()
        else:
            raise Exception("both dog and cat queue are null!")
    def poolDog(self):
        if not self.is_DogEmpty():
            d=self.dogqueue.pop(0)
            return d.name,d.getCount()
    def poolCat(self):
        if not self.is_CatEmpty():
            c=self.catqueue.pop(0)
            return c.name,c.getCount()
    def is_Empty(self):
        if self.is_DogEmpty() and self.is_CatEmpty():
            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 j in self.catqueue:
                print((j.name,j.getCount()),end=" ")
            print("")
if __name__=="__main__":
    dog1=Dog("dog1")
    cat1=Cat("cat1")
    dog2=Dog("dog2")
    cat2=Cat("cat2")
    dog3=Dog("dog3")
    cat3=Cat("cat3")

    test=PetEnter()
    test.add(dog1)
    test.add(cat1)
    test.add(dog2)
    test.add(cat2)
    test.add(dog3)
    test.add(cat3)
    print("入队结果:")
    test.show()
    # print("")
    # while not test.is_CatEmpty():
    #     print(test.poolCat())
    # print("")
    # while not test.is_DogEmpty():
    #     print(test.poolDog())
    print("")
    print("出队结果:")
    while not test.is_Empty():
        print(test.pollAll())

结果图如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值