1.编写程序,实现自定义类,模拟队列结构。要求实现入队、出队以及修改队列大小和判断队列是否为空、是否为满的功能,同时要求在入队时如果队列已满则等待指定时间、出队时如果队列已空则等待指定时间等辅助功能
#编写程序,实现自定义类,模拟队列结构。
# 要求实现入队、出队以及修改队列大小和判断队列是否为空、是否为满的功能,
# 同时要求在入队时如果队列已满则等待指定时间、出队时
# 如果队列已空则等待指定时间等辅助功能
def init(self, size=20):
self._content = []
self._size = size
self._current = 0
def setSize(self, size):
if size < self._current:
# 如果缩小队列,应删除后面的元素
for i in range(size, self._current)[::-1]:
del self._content[i]
self._current = size
self._size = size
def put(self, v, timeout=999999):
# 模拟入队,在列表尾部追加元素
if self._current < self._size:
self._content.append(v)
self._current = self._current + 1
else:
# 队列满,阻塞,超时放弃
for i in range(timeout):
time.sleep(1)
if self._current < self._size:
self._content.append(v)
self._current = self._current + 1
break
else:
return '队列已满,超时放弃'
def get(self, timeout=999999):
# 模拟出队,从列表头部弹出元素
if self._content:
self._current = self._current - 1
return self._content.pop(0)
else: .
# 队列为空,阻塞,超时放弃
for i in range(timeout):
time.sleep(1)
if self._content:
self._current = self._current - 1
return self._content.pop(0)
# pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
else:
return '队列为空,超时放弃'
def show(self):
# 如果列表非空,输出列表
if self._content:
print(self._content)
else:
print('The queue is empty')
def empty(self):
self._content = []
self._current = 0
def isEmpty(self):
return not self._content
def isFull(self):
return self._current == self._size
2.继承课本中6.5节例6-2中的Person类生成Student类,编写新的函数用来设置学生专业,然后生成该类对象并显示信息
#继承课本中6.5节例6-2中的Person类生成Student类,编写新的函数用来设置学生专业,然后生成该类对象并显示信息
import types
class Person(object):#基类必须继承于object,否则在派生类中将无法使用super()函数
def __init__(self,name = '',age = 20,sex = 'man'):
self.setName(name)
self.setAge(age)
self.setSex(sex)
def setName(self,name):
if not isinstance(name,str):
print('name must be string.')
return
self.__name = name
def setAge(self,age):
if not isinstance(age,int):
print('sge must be integer.')
return
self.__age = age
def setSex(self,sex):
if sex != 'man'and sex!='woman':
print('sex must be "man"or"woman"')
return
self.__sex = sex
def show(self):
print('Name:',self.__name)
print('Age:',self.__age)
print('Sex:',self.__sex)
class Student(Person):
def __init__(self,name = '',age = 20,sex = 'man',major = 'Computer'):
super(Student,self).__init__(name,age,sex)
self.setMajor(major)
def setMajor(self,major):
if not isinstance(major, str):
print('major must be a string.')
return
self.__major = major
def show(self):
super(Student, self).show()
print('Major:',self.__major)
if __name__ == '__main__':
zhangsan = Person('Maming',19,'man')
zhangsan.show()
lisi = Student('Wangxi', 20, 'man', 'Math')
lisi.show()