初识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('员工信息已添加!\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: 类练习 - 老板&员工的更多相关文章
- 初识Python类
吐槽:学习面向对象就像你追一个女神一样,刚刚有点感觉了,过几天又陷入绝望的感觉,很蛋疼. 类的语法 class Person(object): print("learning class&q ...
- 初识python中的类与对象
这篇博客的路线是由深入浅,所以尽管图画的花花绿绿的很好看,但是请先关注我的文字,因为初接触类的小伙伴直接看类的实现可能会觉得难度大,只要耐着性子看下去,就会有一种“拨开迷雾看未来”的感觉了. 一.py ...
- day9学python 类+异常处理+初识socket
类+异常处理+初识socket 类的特点: 1.封装-同其他语言 2.继承 py2 经典类深度优先 新式类类名(object)广度优先py3 都是广度优先 3.多态-python本身无多态 可用方法调 ...
- 孤荷凌寒自学python第二十一天初识python的类
孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才 ...
- 孤荷凌寒自学python第十一天初识Python的字典类
孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...
- Python 基础之面向对象初识与类的封装
一.面向对象类的初识 1.类的定义 #三种方式:#1.class MyClass: pass #2.推荐class MyClass(): pass #3.class MyClass(obj ...
- 初识python面向对象
一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...
- @1-2初识Python爬虫
初识Python爬虫 Python爬虫(入门+进阶) DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...
- python学习【第二篇】初识python
python的安装 windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机] ...
随机推荐
- 实现new Date(), 获取当前时间戳
JS 获取时间戳: 我相信大家找了很久了吧! 希望我写的这个对您有些帮助哦~ 大家是不是以为时间戳是关于时间的,都去 new Date() 里面找方法了啊,我来告诉你们正确的吧 其实大家用 JS 里的 ...
- 如何用three.js实现数字孪生、3D工厂、3D工业园区、智慧制造、智慧工业、智慧工厂-第十课
文章前,先聊点啥吧. 最近元宇宙炒的挺火热,在所有人都争相定义元宇宙的时候,资本就开始着手入场了.当定义明确,全民皆懂之后,风口也就过去了. 前两天看到新闻,新世界CEO宣布购入最大的数字地块,这块虚 ...
- CF955C Sad powers 题解
Content 给你 \(q\) 个询问,每次询问 \([l,r]\) 这个区间内满足 \(x=a^p(a>0,p>1)\) 的 \(x\) 的数量. 数据范围:\(1\leqslant ...
- CF1514A Perfectly Imperfect Array 题解
Content 给定一个长度为 \(n\) 的序列,问是否存在一个非空子序列,使得这个子序列所有元素的积不是完全平方数. 数据范围:\(t\) 组数据,\(1\leqslant t\leqslant ...
- LuoguP6857 梦中梦与不再有梦 题解
Update \(\texttt{2020.10.20}\) 增加了证明.感谢@东北小蟹蟹(dbxxxqwq)的提醒. Content 有一个 \(n\) 个点的无向图,每两个点之间都有一条边直接相连 ...
- Mysql 主从复制机制
https://blog.csdn.net/girlgolden/article/details/89226528 MySQL异步复制及semi-sync半同步复制,它们都基于MySQL binlog ...
- 使用react搭建组件库:react+typescript+storybook
前期准备 1. 初始化项目 npx create-react-app react-components --template typescript 2. 安装依赖 使用哪种打包方案:webpack/r ...
- flink启动报错:java.lang.NoSuchMethodError: org.apache.flink.api.java.ClosureCleaner.clean(Ljava/lang/Object;Z)V
这是因为pom文件引入的flink相关依赖设置成了provided 作用域 要嘛把这个去掉 但是如果是IDEA的话 可以更简单的操作 把这个打勾保存 接着重新启动main方法即可
- 使用iframe实现上下窗口结构及登录页全窗口展示Demo
iframe.html 首页 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- docker启动redis报错 oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docker启动redis报错 1:C 17 Jun 08:18:04.613 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 17 Jun 08 ...