• 初识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()
    老板与员工

    执行结果部分截图如下:

     

     

     

     

  • 相关阅读:
    下面这段java的源代码的意思
    Swing高级JInternalFrameTest内部窗体
    (转)为什么水平滚动条显示不了
    创建主窗体(转)
    javax.swing.JOptionPane.showMessageDialog() 方法
    Java图形界面设计
    java 做项目时遇到的一些问题
    selectmethod=cursor的含义及其使用
    java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;
    10.24
  • 原文地址:https://www.cnblogs.com/simple-li/p/11437530.html
Copyright © 2020-2023  润新知