初识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.配置环境变量 [右键计算机] ...
随机推荐
- 【编程思想】【设计模式】【行为模式Behavioral】状态模式State
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/state.py #!/usr/bin/env pytho ...
- 基于阿里云 ecs 使用 docker 方式部署 showDoc
官网文档:https://www.showdoc.cc/help?page_id=65610 (建议先看下这个) 首先说明一下,我 ecs 镜像是 CentOS 7.6 64位 1. 首先在 服务器上 ...
- 【科研工具】MathType7.2的安装破解与使用
亲测可用,可以嵌入word. [我们为什么要用MathType] tex不香嘛,但是学校给的模板只有word,word输入公式点起来实在是太麻烦了. 有了这个就可以直接输入公式转换啦. [安装破解教程 ...
- 【简】题解 P5283 [十二省联考2019]异或粽子
传送门:P5283 [十二省联考2019]异或粽子 题目大意: 给一个长度为n的数列,找到异或和为前k大的区间,并求出这些区间的异或和的代数和. QWQ: 考试时想到了前缀异或 想到了对每个数按二进制 ...
- centos k3s部署
目录 一.k3s介绍 二.在线安装 三.离线安装 四.高可用安装 五.配置k3s镜像仓库 六.Kubernetes 仪表盘 七.常用命令 八.参考 一.k3s介绍 1.k3s是一个轻量级的 Kuber ...
- C# 枚举的flags 标志位应用
枚举有个特性叫标志位,使用方法如下 [Flags] enum Foo { a =1, b = 2, c = 4, d = 8 } 每个值需要为2的n次方,保证多个值的组合不会重复. 这样在判断其中一个 ...
- 判断存在…Contains…(Power Query 之 M 语言)
表函数 判断记录在表中是否存在 = Table.Contains( 表, 记录, {"指定列1",-, "指定列n"}) = Table.ContainsAll ...
- 淘宝自动抢购, Webdriver浏览器常用的元素定位
https://www.cnblogs.com/diaosicai/p/5909660.html #!/usr/bin/env python ''' 作者:张铭达 功能:淘宝秒杀购物 版本:0.2 日 ...
- Linux使用docker安装Nginx
拉取镜像 docker pull nginx 启动镜像 docker run -d -p 8000:8000 -p 443:443 --name nginx -v /data/nginx/www:/u ...
- Linux使用SCP命令不使用密钥直接进行远程复制(SSH免密登录)
假设A服务器要把文件复制到B服务器上 首先我们要在A服务器上生成密钥对 参考:https://www.cnblogs.com/pxblog/p/14396409.html 然后在把生成的密钥公钥id_ ...