第六次python实验

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值