python习题练习

server/2024/11/17 21:54:59/

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/server/142454.html

相关文章

【数据结构】【线性表】静态链表(附C语言源码)

静态链表 链表是物理结构为链式的线性表,其每个结点的存储位置不一定是连续的,每个结点依靠结点元素的中的指针线性相连。但有时候为了方便管理内存空间,会将链表的各个结点存储空间放在一块,其实现方式类似于数组,只…

后端:Spring AOP原理--动态代理

文章目录 1. Spring AOP底层原理2. 代理模式3. 静态代理4. 动态代理4.1 jdk 实现动态代理4.2 cglib 实现动态代理4.3 jdk、cglib动态代理两者的区别 1. Spring AOP底层原理 创建容器 new applicationContext();Spring把所有的Bean进行创建,进行依赖注入…

Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量

Invar-RAG:基于不变性对齐的LLM检索方法提升生成质量 论文链接:https://arxiv.org/html/2411.07021v1 论文概述 在检索增强型生成(Retrieval-Augmented Generation, RAG)系统中直接应用大型语言模型(Large Language Models, LLM…

Python习题 250:删除空文件夹

(编码题)编写一段 Python 代码,删除指定目录的空文件夹。 参考答案: 使用 pathlib 库可以更简洁地处理文件路径。下面是一个使用 pathlib 库递归删除空文件夹的 Python 代码:from pathlib import Pathdef remove_empty_dirs(directory):# 遍历目录及其子目录for path in…

Linux 进程信号初识

目录 0.前言 1.什么是信号 1.1生活中的信号 1.2 OS中的信号 2.认识信号 2.1信号概念 2.2查看信号 2.3 signal函数 2.4代码示例 3. 信号处理方式 3.1 忽略信号 3.2 默认处理 3.3 自定义处理 4.小结 (图像由AI生成) 0.前言 在之前的学习中,我…

Redis 字符串(String)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME实例 redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> GET w3ckey "redis"在以上实例中我…

【回溯法】——分割回文串

131. 分割回文串 一、题目难度 中等 二、相关标签与相关企业 [相关标签] [相关企业] 三、题目描述 给你一个字符串 s s s,请你将 s s s 分割成一些子串,使每个子串都是回文串。返回 s s s 所有可能的分割方案。 四、示例 示例1 输入&#xf…

Bugku CTF_Web——点login咋没反应

Bugku CTF_Web——点login咋没反应 进入靶场 随便输个试试 看来确实点login没反应 抓包看看 也没有什么信息 看了下源码 给了点提示 一个admin.css try ?12713传参试试 拿到一个php代码 <?php error_reporting(0); $KEYctf.bugku.com; include_once("flag.php&q…