老板专属:雇佣员工干活
超长题目:
1.创建员工类
Employee
,属性有姓名name
、能力值ability
、年龄age
(能力值为100-年龄) 功能有doWork
(),该方法执行一次,该员工的能力值-5,创建str方法,打印该员工的信息
2、创建老板类Boss
,属性有金钱mone
y,员工列表employeeList
(存储员工类对象),工作量work
,功能有雇佣员工addEmployee()
,雇佣后将员工添加至列表中,雇佣一人money减5000,
金额不足时不能雇佣新员工;
开始工作startWork()
,工作开始后,依次取出员工列表中的员工开始工作,员工能力值减少的同时总的工作量work也减少,当工作量work为0时,
工作结束,调用endWork
(该方法为Boss类方法,打印员工的能力值信息)方法,如果所有员工使用完后,依然没有完成工作,则提示老板需要雇佣新员工,并打印剩余工作量
3、创建Boss类
对象,默认执行雇佣3个员工,年龄分别为30,40,50 ,然后死循环开始工作,直至工作完成。
- 咋说呢,开始的时候,我以为这个题目是分开的,写的人都麻了,原谅一个刚学python 的孩子,还不太会使用这个python和pycharm。
- 虽然代码不全部都是原创,但是,我还是想解释一下代码的意思,毕竟,某人因为传参问题,卡死了一个小时,最后找到问题的解决办法的时候,只能说自己是个憨憨!
分块代码1
解释:
- 先创建一个
Employee类
,构造方法传入参数name
和age
,能量ability
是100-age
- 成员方法:
doWork
方法是对能量ability
进行递减 - 成员方法:
str
方法是对员工信息格式化输出,用的format
代码:
class Employee:
def __init__(self, name, age) -> None:
self.name = name
self.ability = 100-age
self.age = age
def doWork(self):
self.ability -= 5
def str(self):
print("姓名:{},年龄:{},能力值:{}".format(self.name, self.age, self.ability))
分块代码2
解释:
__init__
:定义变量,俩个是一般变量,一个是列表LIstaddEmpliyee
:如果钱够了5000,就用append
方法把雇员的信息放入字典List里面startwork
:这个man
是第一个类
:Employee
的实例化,如果精力足够,就dowork
,就会减少5个能量值,工作量也会减少5个,然后当工作到0的时候,就完成工作了,如果循环都结束了(循环是:自己输入的三个雇员放到employeelist
里面再在Boss类里面转换成self_List),工作还是大于0,那么就需要再雇佣人员endwork
:该函数在startwork
里面当工作等于0(工作做完了)的时候,被调用了,显示工作结束的时候,成员剩余的能量值
代码:
class Boss:
def __init__(self, money, work, employeelist) -> None:
self.money = money
self.work = work
self.List = employeelist
#雇佣员工
def addEmployee(self, name, age):
if self.money >= 5000:
e = Employee(name, age)
self.List.append(e)
self.money -= 5000
# print(self.employeeList)
else:
print("sorry! You cannot employ the new employee")
# 开始工作,工作值随能量值一起降低5
def startWork(self):
for man in self.List:
while man.ability > 0:
man.doWork()
self.work -= 5
if self.work == 0:
self.endWork()
break
if self.work > 0:
print("需要雇佣员工啦!还有{}任务量哦!".format(self.work))
# 结束工作,打印员工能量值
def endWork(self):
for i in self.List:
i.str()
分块代码3
解释:
其实第三块特别简单,也没啥好讲的,但是!!!
B = Boss(20000, 1000, [E1, E2, E3])
这个调用,一定要和Boss里面的def __init__(self, money, work, employeelist) -> None:
顺序相同- 我出现的错误:我把
B = Boss(20000, 1000, [E1, E2, E3])
写出了B = Boss(20000, [E1, E2, E3],1000)
,然后就报错:TypeError: 'int' object is not iterable
,找了半天都没翻到问题,最后解决了一会,只感觉自己就是个憨憨!
代码:
E1 = Employee('001', 30)
E2 = Employee('002', 40)
E3 = Employee('003', 50)
B = Boss(20000, 1000, [E1, E2, E3])
B.startWork()
最终代码
class Employee:
def __init__(self, name, age) -> None:
self.name = name
self.ability = 100-age
self.age = age
def doWork(self):
self.ability -= 5
def str(self):
print("姓名:{},年龄:{},能力值:{}".format(self.name, self.age, self.ability))
class Boss:
def __init__(self, money, work, employeelist) -> None:
self.money = money
self.work = work
self.List = employeelist
#雇佣员工
def addEmployee(self, name, age):
if self.money >= 5000:
e = Employee(name, age)
self.List.append(e)
self.money -= 5000
# print(self.employeeList)
else:
print("sorry! You cannot employ the new employee")
# 开始工作,工作值随能量值一起降低5
def startWork(self):
for man in self.List:
while man.ability > 0:
man.doWork()
self.work -= 5
if self.work == 0:
self.endWork()
break
if self.work > 0:
print("需要雇佣员工啦!还有{}任务量哦!".format(self.work))
# 结束工作,打印能量值
def endWork(self):
for i in self.List:
i.str()
E1 = Employee('001', 30)
E2 = Employee('002', 40)
E3 = Employee('003', 50)
B = Boss(20000, 1000, [E1, E2, E3])
B.startWork()
运行结果截图: