需求:
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()
执行结果部分截图如下: