初识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.配置环境变量 [右键计算机] ...
随机推荐
- 【Spring Framework】Spring入门教程(二)基于xml配置对象容器
基于xml配置对象容器--xml 标签说明 alias标签 作用:为已配置的bean设置别名 --applicationContext.xml配置文件 <?xml version="1 ...
- SQL错误总结
ORA-00918: column ambiguously defined 异常原因: select 查询的字段在from的两张表中都存在,导致数据库无法区别需要查询的字段来自于哪张表 以下是例子 s ...
- 关于for与forEach遍历集合中对集合进行操作的问题
遍历List集合,在循环中再对List集合进行操作,有时候会遇到ConcurrentModificationException(并发修改异常);其实只有在forEach循环集合再对集合操作会发生异常: ...
- 【C/C++】two pointers/归并排序/原理/理解/实现/算法笔记4.6
1.two pointers 思路:对序列进行扫描的时候,根据序列本身的特性用两个下标i和j对序列进行扫描,从而降低算法复杂度. ·例1 在递增序列中找a + b = M while (i<j) ...
- threejs 贴图动画总结
引言 在三维可视化中,会涉及到很多动画,其中贴图动画是其中很重要的一种,本文介绍几种贴图动画的思路,供大家一起探讨. 流动动画 流动动画通过设置贴图的repeat属性,并不断改变贴图对象的offset ...
- 如何利用火焰图定位 Java 的 CPU 性能问题
常见 CPU 性能问题 你所负责的服务(下称:服务)是否遇到过以下现象: 休息的时候,手机突然收到大量告警短信,提示服务的 99.9 line 从 20ms 飙升至 10s: 正在敲代码实现业务功能 ...
- [BUUCTF]REVERSE——rsa
rsa 附件 题目是rsa,首先了解一下什么是rsa加密,具体的看这个文章 首先大概介绍下RSA加密解密 RSA加密是对明文的E次方后除以N后求余数的过程 公钥n = p * q,其中p和q是两个大素 ...
- Linux centos 安装Docker
安装docker需要centos7 内核3.1以上 基本上centos7以上的都支持, 然后先更新到最新 sudo yum update 然后直接安装 sudo yum install docker ...
- CF812A Sagheer and Crossroads 题解
Content 有一个十字路口,从最下面的部分开始,逆时针依次标号为 \(1,2,3,4\).每个部分有四个灯,分别为左转的灯.直行的灯.右转的灯以及人行通道灯(只有可能为红灯和绿灯).如果某个部分的 ...
- RabbitMQ 消息队列 实现RPC 远程过程调用交互
#!/usr/bin/env python # Author:Zhangmingda import pika,time import uuid class FibonacciRpcClient(obj ...