初识python: 类练习

需求:

  1、员工具有姓名、年龄、能力值(能力值为100-年龄),可以工作,每工作一次,该员工的能力值-5,创建__str__方法,打印该员工的信息;
  2、老板具有投资金额,工作量,员工列表。可以雇佣员工,雇佣后将员工添加至列表中,雇佣一人投资金额减5000,金额不足时不能雇佣新员工;
  3、员工工作时,依次取出员工列表中的员工开始工作,员工能力值减少的同时总的工作量也减少,当工作量为0时,工作结束;
  4、如果所有员工使用完后,依然没有完成工作,则提示老板需要雇佣新员工,并打印剩余工作量;
  5、结束工作,打印员工的能力值信息。

具体代码如下:

#!/user/bin env python
# author:Simple-Sir
# time:2019/8/30 14:12
# 类的练习:老板与员工

class Boss():
    '''
    老板类
    money : 老板的金额
    workload : 工作量
    emplist : 员工列表
    '''
    def __init__(self,money,workload):
        super(Boss,self)
        self.money = money
        self.workload = workload
        self.emplist = []

    def staff(self,emp_obj):
        '''
        雇佣员工
        :param emp_obj: 员工对象
        '''
        if self.money >= 5000:
            self.emplist.append(emp_obj)
            self.money -= 5000
            print('员工信息已添加!
您一共有%s个员工'%len(self.emplist))
        else:
            print('您的金额已不足,无法再招聘员工!')

    def startWork(self):
        print('emmmm...您还没有员工,请先招聘员工。')
        is_staff = ''
        while is_staff != 'N':
            name = input('员工姓名:').strip()
            age = int(input('年龄:').strip())
            while age<18 or age>=65:
                if age <= 3 or age >= 70:
                    print('嘿,朋友!走点心!尊老爱幼是中华名族的传统美德!')
                elif age >= 4 and age < 18:
                    print('你确定要雇佣童工吗?')
                elif age >= 65:
                    print('朋友,这已经是退休年龄了!')
                age = int(input('年龄:').strip())
            e = Employees(name, age)
            print(e)  # 查看员工信息
            self.staff(e)
            if self.money >= 5000:
                is_staff = input('您是否还要继续招聘员工?').strip().upper()
            else:
                print('您的资产已不足已再招聘一个员工了!将开始工作!')
                break
        print('------ 所有员工信息 ------')
        for info in self.emplist:
            print('姓  名:%s
年  龄:%s
能力值:%s
 - - - - - - - - - - - - - - - -' % (info.name, info.age, info.ability))
        for e in self.emplist:
            while e.ability >= 0:
                e.work()
                self.workload -= 5
                if self.workload <= 0:
                    print('工作已完成')
                    return
        if self.workload > 0:
            print('还有%s个工作量没做完,需要招聘新的员工!' % self.workload)

    def endWork(self):
        '结束工作'
        if len(self.emplist) > 0:
            print('----- 员工能力值 -----')
            for e in self.emplist:
                e.ability = 0 if e.ability < 0 else e.ability
                print('%s的能力值:%s'%(e.name,e.ability))

class Employees(object):
    '员工'
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.ability = 100 - age

    def __str__(self):
        '员工信息'
        return '''
--- 员工信息 ---
    姓名:%s
    年龄:%s
    能力值:%s  
        '''%(self.name,self.age,self.ability)

    def work(self):
        '工作'
        print('%s正在工作....'%self.name)
        self.ability -= 5


def main():
    money = int(input('老板,您打算投资多少钱啊?
').strip())
    while money < 5000:
            print('这么点钱还想当老板?再考虑考虑?')
            money = int(input('老板,您到底打算投资多少钱啊?
').strip())
    workload = int(input('老板,您有多少工作要做呢?
').strip())
    while workload <= 0:
            print('您是大善人么?不用工作,还能拿工资!')
            workload = int(input('好好想想,您到底有多少工作要做呢?
').strip())
    b = Boss(money,workload)
    b.startWork()
    b.endWork()

if __name__ == '__main__':
    main()
老板与员工

执行结果部分截图如下:

 

 

 

 

原文地址:https://www.cnblogs.com/simple-li/p/11437530.html