* 猫狗队列 :
* 用户可以调用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())
结果图如下: