python习题练习

devtools/2024/11/16 2:56:01/

python_0">python习题

  编写一个简单的工资管理程序系统可以管理以下四类人:工人(worker)、销售员(salesman)、经理(manager)、销售经理(salemanger)所有的员工都具有员工号,工资等属性,有设置姓名,获取姓名,获取员工号,计算工资等方法。1)工人:工人具有工作小时数和时薪的属性,工资计算法方法为工作小时数*时薪。2)销售员:具有销售额和提成比例的属性,工资计算方法为销售额*提成比例。3)经理:具有固定月薪的属性,工资计算方法为固定月薪。4)销售经理:工资计算方法为销售额*提成比例+固定月薪。请根据以上要求设计合理的类,完成以下功能:1)添加所有类型的人员2)计算月薪3)显示所有人工资情况

解法一

python">class Person:def __init__(self,no,name,salary):self.no =noself.name=nameself.salary =salarydef __str__(self):msg = '工号:{}名字:{}薪水:{}'.format(self.no,self.name,self.salary)return msgdef getSalary(self):return self.salary
class Worker(Person):def __init__(self,no,name,salary,hours,per_hour):super().__init__(no,name,salary)self.hours =hoursself.per_hour=per_hourdef getSalary(self):money = self.hours*self.per_hourself.salary+=moneyreturn self.salary
class Salman(Person):def __init__(self,no,name,salary,salemoney,percent):super().__init__(no,name,salary)self.salemoney =salemoneyself.percent =percentdef getSalary(self):money =self.salemoney*self.percentself.salary+=moneyreturn  self.salary
class Manager(Person):def __init__(self,no,name,fixed_monthly_salary):super().__init__(no,name,fixed_monthly_salary)def calculate_salary(self):return self.fixed_monthly_salary
class SaleManager(Person):def __init__(self, no, sales_amount, commission_rate, fixed_monthly_salary):super().__init__(no,sales_amount, commission_rate, fixed_monthly_salary)self.sales_amount = sales_amountself.commission_rate = commission_rateself.fixed_monthly_salary = fixed_monthly_salarydef calculate_salary(self):return self.sales_amount * self.commission_rate + self.fixed_monthly_salaryclass Manager(Person):def __init__(self, no, name, fixed_monthly_salary):super().__init__(no, name, fixed_monthly_salary)def calculate_salary(self):return self.fixed_monthly_salaryclass Salemanager(Person):def __init__(self, no, name, fixed_monthly_salary, salemoney, percent):super().__init__(no, name, fixed_monthly_salary)self.salemoney = salemoneyself.percent = percentdef getSalary(self):money = self.salemoney * self.percent + self.fixed_monthly_salaryself.salary += moneyreturn self.salary# 添加所有类型的人员
workers = [Worker(1, '工人 1', 0, 160, 50),Worker(2, '工人 2', 0, 180, 60)
]salesmans = [Salman(3, '销售员 1', 0, 100000, 0.1),Salman(4, '销售员 2', 0, 120000, 0.12)
]managers = [Manager(5, '经理 1', 10000),Manager(6, '经理 2', 12000)
]salemanagers = [Salemanager(7, '销售经理 1', 15000, 150000, 0.15),Salemanager(8, '销售经理 2', 18000, 180000, 0.18)
]all_people = workers + salesmans + managers + salemanagers# 计算月薪并显示所有人工资情况
for person in all_people:print(person)print('月薪:', person.getSalary())# 创建子类
w =Worker('001','king',100,160,100)
s =w.getSalary()
print('月薪')

解法二

python">class Employee:def __init__(self, employee_number):self.employee_number = employee_numberself.name = ""self.salary = 0def set_name(self, name):self.name = namedef get_name(self):return self.namedef get_employee_number(self):return self.employee_numberdef calculate_salary(self):passclass Worker(Employee):def __init__(self, employee_number, working_hours, hourly_rate):super().__init__(employee_number)self.working_hours = working_hoursself.hourly_rate = hourly_ratedef calculate_salary(self):return self.working_hours * self.hourly_rateclass Salesman(Employee):def __init__(self, employee_number, sales_amount, commission_rate):super().__init__(employee_number)self.sales_amount = sales_amountself.commission_rate = commission_ratedef calculate_salary(self):return self.sales_amount * self.commission_rateclass Manager(Employee):def __init__(self, employee_number, fixed_monthly_salary):super().__init__(employee_number)self.fixed_monthly_salary = fixed_monthly_salarydef calculate_salary(self):return self.fixed_monthly_salaryclass SaleManager(Employee):def __init__(self, employee_number, sales_amount, commission_rate, fixed_monthly_salary):super().__init__(employee_number)self.sales_amount = sales_amountself.commission_rate = commission_rateself.fixed_monthly_salary = fixed_monthly_salarydef calculate_salary(self):return self.sales_amount * self.commission_rate + self.fixed_monthly_salary# 工资管理系统类
class SalaryManagementSystem:def __init__(self):self.employees = []def add_employee(self, employee_type, employee_number, *args):if employee_type == "worker":working_hours, hourly_rate = argsself.employees.append(Worker(employee_number, working_hours, hourly_rate))elif employee_type == "salesman":sales_amount, commission_rate = argsself.employees.append(Salesman(employee_number, sales_amount, commission_rate))elif employee_type == "manager":fixed_monthly_salary = args[0]self.employees.append(Manager(employee_number, fixed_monthly_salary))elif employee_type == "salemanger":sales_amount, commission_rate, fixed_monthly_salary = argsself.employees.append(SaleManager(employee_number, sales_amount, commission_rate, fixed_monthly_salary))def calculate_monthly_salary(self):for employee in self.employees:salary = employee.calculate_salary()print(f"{employee.get_name()} 的月薪为: {salary}")# 测试代码
salary_system = SalaryManagementSystem()salary_system.add_employee("worker", 1, 160, 50)
salary_system.add_employee("salesman", 2, 10000, 0.1)
salary_system.add_employee("manager", 3, 10000)
salary_system.add_employee("salemanger", 4, 20000, 0.2, 8000)salary_system.calculate_monthly_salary()

http://www.ppmy.cn/devtools/134325.html

相关文章

Python学习从0到1 day26 第三阶段 Spark ⑤ 搜索引擎日志分析

目录 一、搜索引擎日志分析 二、需求1:热门搜索时间段(小时精度)Top3 实现步骤 三、需求2:打印输出:热门搜索词Top3 实现步骤 四、需求3:打印输出:统计hadoop关键字在哪个时段被搜索最多 实现步骤 五、需求4:将数据转换为JSON格式…

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中,SendMessage方法是一个强大的工具,它允许我们与Windows API交互,模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数,它用…

python环境中,敏感数据的存储与读取问题解决方案

提出原因:因为下面所说的这个模块,我运行时不出任何作用。所以。 有一些类似于 python-dotenv 的模块,可以用来管理环境变量。以下是一些常用的替代模块及其代码示例: ### 1. os.environ Python 标准库中的 os.environ 可以直接…

【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件

MySQL与Oracle一样都是通过逻辑存储结构来管理物理存储结构,即管理硬盘上存储的各种文件。下面将详细介绍InnoDB存储引擎中的数据文件和重做日志文件。 一、数据文件 “.ibd”文件和ibdata文件 这两种文件都是存放Innodb数据的文件,之所以有两种文件来…

C++11新特性(二)

目录 一、C11的{} 1.初始化列表 2.initializer_list 二、可变参数模版 1.语法与原理 2.包扩展 3.empalce接口 三、新的类功能 四、lambda 1.语法 2.捕捉列表 3.原理 五、句装器 1.function 2.bind 一、C11的{} 1.初始化列表 C11以后想统⼀初始化⽅式&#xff0…

node.js学习笔记-快速搭建一个 Express 项目的基本骨架(一)

一、前言 express-generator是 Express 框架提供的一个应用程序生成器工具,它可以帮助你快速搭建一个 Express 项目的基本骨架,节省大量手动创建文件和配置的时间。 以下是关于它的详细介绍和使用步骤: 二、安装 首先,确保你已经…

万字长文解读机器学习——感知机、MLP、SVM

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…

11.11 机器学习-数据集的获取和划分

# sklearn玩具数据集 # 鸢尾花 数据集使用 from sklearn.datasets import load_iris,load_wine,fetch_20newsgroups # 导入 数据集 load本地 feath联网 from sklearn.model_selection import train_test_split # 数据集划分方法 from sklearn.feature_extraction import Di…