需求:

  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('员工信息已添加!\n您一共有%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\n年 龄:%s\n能力值:%s\n - - - - - - - - - - - - - - - -' % (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('老板,您打算投资多少钱啊?\n').strip())
while money < 5000:
print('这么点钱还想当老板?再考虑考虑?')
money = int(input('老板,您到底打算投资多少钱啊?\n').strip())
workload = int(input('老板,您有多少工作要做呢?\n').strip())
while workload <= 0:
print('您是大善人么?不用工作,还能拿工资!')
workload = int(input('好好想想,您到底有多少工作要做呢?\n').strip())
b = Boss(money,workload)
b.startWork()
b.endWork() if __name__ == '__main__':
main()

老板与员工

执行结果部分截图如下:

初识python: 类练习 - 老板&员工的更多相关文章

  1. 初识Python类

    吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼. 类的语法 class Person(object): print("learning class&q ...

  2. 初识python中的类与对象

    这篇博客的路线是由深入浅,所以尽管图画的花花绿绿的很好看,但是请先关注我的文字,因为初接触类的小伙伴直接看类的实现可能会觉得难度大,只要耐着性子看下去,就会有一种“拨开迷雾看未来”的感觉了. 一.py ...

  3. day9学python 类+异常处理+初识socket

    类+异常处理+初识socket 类的特点: 1.封装-同其他语言 2.继承 py2 经典类深度优先 新式类类名(object)广度优先py3 都是广度优先 3.多态-python本身无多态 可用方法调 ...

  4. 孤荷凌寒自学python第二十一天初识python的类

    孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才 ...

  5. 孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  6. Python 基础之面向对象初识与类的封装

    一.面向对象类的初识 1.类的定义 #三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(obj ...

  7. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  8. @1-2初识Python爬虫

    初识Python爬虫 Python爬虫(入门+进阶)     DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...

  9. python学习【第二篇】初识python

    python的安装 windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机] ...

随机推荐

  1. Spring Cloud中,如何解决Feign整合Hystrix第一次请求失败的问题

    Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间 ...

  2. linux基本操作命令2

    复制文件 格式: cp [参数] [ 被复制的文件路径] [ 复制的文件路径] -r :递归复制  (需要复制文件夹时使用) 案例:将/root目录下的test文件夹及其内部的文件复制到/tmp中 [ ...

  3. vue插槽理解

    1.插槽作用:父向子传递一段Html代码块 2.分类: (1)默认插槽:规则:父给子传,用父,不传,用子. (2)具名插槽:适用于一个页面有多个插槽时,需要做区分,使用name属性.给插槽取个名字 ( ...

  4. 严重危害警告!Log4j 执行漏洞被公开!

    12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重. Log4j2 是一个基于 Java 的日志记录工具.它重写了 Log4j 框架,引入 ...

  5. 转:StoryBoard快速上手

    由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我也追随时尚,直接开始使用storyboard.(不料在涉及到页 面跳转的时候,遇到的问题是:点击后没有任何反应)众所周知 ...

  6. [BUUCTF]REVERSE——SimpleRev

    SimpleRev 附件 步骤: 例行查壳儿,,无壳,64位程序 64位ida载入,看main函数 关键代码段在Decry函数里 unsigned __int64 Decry() { char v1; ...

  7. w4sp-lab安装

    扯淡 i春秋有个答题活动,苟了个奖品,我选了一本书:<wireshark与metasploit实战指南>,里面有个配套环境,本来看着书上说使用docker搭建的,以为很简单,只需要pull ...

  8. mysql添加上log_bin步骤如下

    mysql添加上log_bin步骤如下

  9. django——django链接mysql数据库

    1.创建项目 django-admin startproject django_mysql 2.创建App python manage.py startapp app1 3.Mysql数据库配置 (1 ...

  10. 【九度OJ】题目1023:EXCEL排序 解题报告

    [九度OJ]题目1023:EXCEL排序 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1023 题目描述: E ...