初识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.配置环境变量 [右键计算机] ...
随机推荐
- 【编程思想】【设计模式】【结构模式Structural】适配器模式adapter
Python版 https://github.com/faif/python-patterns/blob/master/structural/adapter.py #!/usr/bin/env pyt ...
- maven常用命令(待补充)
1.mvn clean 删除已经编译好的信息 2.mvn compile 编译src/main/java目录下的.java文件 3.mvn test 编译src/main/java和src/test/ ...
- Springboot集成SpringSecurity
一.Spring security 是什么? Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架. 它提供了一组可以在Spring应用上 ...
- 【C/C++】学生排队吃饭问题
问题: 有n个学生,学生们都在排队取餐,第个学生在L国时刻来到队尾,同一时刻来的学生编号小的在前,每个时刻当队列不为空时,排在队头的同学就可以拿到今天的中餐并离开队伍,若第个学生R团时刻不能拿到中餐, ...
- TV盒子 android 4.4安装kodi 和 安装jellyfin插件连接到 jellyfin服务器
很多IPTV盒子系统都是android 4.4的,无法安装新版kodi, 最高只能安装到改版的kodi, 版本是17.1,jellyfin插件也只能安装到0.5.8 首先下载kodi和jellyfin ...
- spring security oauth2 搭建认证中心demo
oauth2 介绍 oauth2 协议应该是开发者们耳熟能详的协议了,这里就不做过多的介绍了,具体介绍如何在spring security中搭建oauth2的认证服务.Spring-Securit ...
- Mysql资料 查询SQL执行顺序
目录 一.Mysql数据库查询Sql的执行顺序是什么? 二.具体顺序 一.Mysql数据库查询Sql的执行顺序是什么? (9)SELECT (10) DISTINCT column, (6)AGG_F ...
- Decorator 模式转载
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://tianli.blog.51cto.com/190322/35287 摘要:本文深 ...
- SQL优化一例:通过改变分组条件(减少计算次数)来提高效率
#与各人授权日期相关,所以有十万用户,就有十万次查询(相关子查询) @Run.ExecuteSql("更新各人应听正课数",@"update bi_data.study_ ...
- centos安装宝塔命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh & ...