#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)