python习题练习

python习题

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

解法一

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('月薪')

解法二

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.mzph.cn/web/59563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11. 观光景点组合得分问题 |豆包MarsCode AI刷题

观光景点组合得分问题 - MarsCode 题目要求我们计算一组观光景点的最高组合得分。每个景点都有一个评分&#xff0c;保存在数组 values 中。一对景点 (i < j) 的观光组合得分为 values[i] values[j] i - j&#xff0c;即两者评分之和减去它们之间的距离。 我们需要找到一…

自动化生成测试用例:利用OpenAI提升电商网站测试覆盖率

导语 自动化生成测试用例是软件测试领域一个强大的应用&#xff0c;通过OpenAI的语言模型&#xff0c;测试工程师可以快速生成高质量的测试用例&#xff0c;尤其是在处理边界条件和极端情况时&#xff0c;提升测试覆盖率。本篇文章将结合一个典型的电商网站案例&#xff0c;介绍…

ssm102“魅力”繁峙宣传网站的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;“魅力”繁峙宣传网站系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了“魅力”繁峙宣传网站系统的发展&#x…

基于Matlab的碎纸片的自动拼接复原技术

碎纸片的自动拼接复原技术 摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的…

微信小程序的主体文件和页面文件介绍

一、主体文件 主体文件即全局文件&#xff0c;作用于整个小程序&#xff0c;对每一个页面都有影响&#xff0c;必须放到项目的根目录下。 这里提示一下&#xff0c;项目创建选择的是ts less模版。 1、主体文件介绍 主体文件由三部分组成&#xff1a; 1、app.ts&#xff1…

Kafka-Eagle的配置——kafka可视化界面

通过百度网盘分享的文件&#xff1a;kafka-eagle-bin-2.0.8.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1H3YONkL97uXbLTPMZHrfdg?pwdsltu 提取码&#xff1a;sltu 一、界面展示 二、软件配置 1、关闭kafka集群 kf.sh stop 2、将该软件上传到/opt/modules下 cd /opt…

【C#】CS0246: 未能找到类型或命名空间名“MySql”

前言 在学习C#,一定要学会了使用NuGet,以后包问题都可以通过此方法解决。望大家不加班~ 问题描述 项目 visual studio 2022 .NETFramework,Version=v4.8错误 CS0246: 未能找到类型或命名空间名“MySql”问题 CS0246 错误表示编译器无法在当前项目中找到名为“MySql”的…

通过Python 调整Excel行高、列宽

在Excel中&#xff0c;默认的行高和列宽可能不足以完全显示某些单元格中的内容&#xff0c;特别是当内容较长时。通过调整行高和列宽&#xff0c;可以确保所有数据都能完整显示&#xff0c;避免内容被截断。合理的行高和列宽可以使表格看起来更加整洁和专业&#xff0c;尤其是在…

【智能电视??】关于电视、以及IPTV 和OTT TV区别(了解)

此条 关键信息&#xff1a; 智能电视&#xff1f;看不了电视 检索“电视家平替app大全”&#xff0c;获取结果 https://www.163.com/dy/article/IK7IQA6M0553A9YO.html 在国家广播电视总局的官网上&#xff0c;有一份通知上写道“只有开通有线电视或IPTV方可收看电视直播频道节…

VirtualBox和 Vagrant

VirtualBox 是一款开源的虚拟化软件&#xff0c;用于在计算机上创建和运行虚拟机&#xff0c;可以模拟多种操作系统。Vagrant 是一个虚拟化环境管理工具&#xff0c;它提供了一个简单的命令行界面来配置和管理虚拟机&#xff0c;主要是与 VirtualBox 一起使用。 下面我会介绍 …

如何用Java爬虫“采集”商品订单详情的编程旅程

在这个数据驱动的世界里&#xff0c;如果你不是数据&#xff0c;那么你一定是在收集数据。就像蜜蜂采集花粉一样&#xff0c;我们程序员也需要采集数据&#xff0c;以便分析、优化和做出明智的决策。今天&#xff0c;我们就来聊聊如何使用Java编写一个爬虫&#xff0c;这个爬虫…

执行flink sql连接clickhouse库

手把手教学&#xff0c;flink connector打通clickhouse大数据库&#xff0c;通过下发flink sql&#xff0c;来使用ck。 组件版本jdk1.8flink1.17.2clickhouse23.12.2.59 1.背景 flink官方不支持clickhouse连接器&#xff0c;工作中难免会用到。 2.方案 利用GitHub大佬提供…

Python数据分析NumPy和pandas(三十二、数据拆分-应用-合并)

最常用的 GroupBy 方法是 apply&#xff0c;apply 将正在操作的对象拆分为多个片段&#xff0c;在每个片段上调用传递给它函数&#xff0c;然后尝试连接这些片段。 还是用前面的小费数据集tips.csv&#xff0c;它的内容如下图&#xff1a; 假设我们想按smoker进行分组并选择前…

【C++】字符串相乘

1.题目 2.代码 介绍一种比较简单的方法&#xff0c;就是先将字符串逆序&#xff0c;然后取出其中每一位的数相乘、相加。最后再考虑进位问题。 class Solution { public:string multiply(string num1, string num2) {//先排除边界情况&#xff0c;防止输出"00000...&quo…

Leetcode热题100-32 最长有效括号

Leetcode热题100-32 最长有效括号 1. 题目描述2. 解题思路动态规划栈解法 3. 代码实现动态规划栈解法 1. 题目描述 32 最长有效括号 2. 解题思路 动态规划 定义状态&#xff1a; 设 dp[i] 表示以位置 i 结尾的最长有效括号子串的长度。 状态转移方程&#xff1a; 遍历字符…

认证鉴权框架SpringSecurity-1--概念和原理篇

1、基本概念 Spring Security 是一个强大且高度可定制的框架&#xff0c;用于构建安全的 Java 应用程序。它是 Spring 生态系统的一部分&#xff0c;提供了全面的安全解决方案&#xff0c;包括认证、授权、CSRF防护、会话管理等功能。 2、认证、授权和鉴权 &#xff08;1&am…

Oracle 单机及 RAC 环境 db_files 参数修改

Oracle 数据库中 DB_FILES 定义了数据库中数据文件的个数&#xff0c;默认值为200&#xff0c;如果创建数据库文件时超过DB_FILES 定义的值就会报 ORA-00059 错误。 下面分别演示单机及 RAC 环境下修改 db_files 参数的操作步骤。 一、单机环境 1.查询当前参数值 SQL> sh…

Android 项目依赖库无法找到的解决方案

目录 错误信息解析 解决方案 1. 检查依赖版本 2. 检查 Maven 仓库配置 3. 强制刷新 Gradle 缓存 4. 检查网络连接 5. 手动下载依赖 总结 相关推荐 最近&#xff0c;我在编译一个 Android 老项目时遇到了一个问题&#xff0c;错误信息显示无法找到 com.gyf.immersionba…

Shell脚本的使用

shell Shell 脚本是一种在 Unix/Linux 操作系统上编写的脚本语言&#xff0c;主要用于自动化执行命令、任务调度以及管理系统。以下是对 Shell 脚本的简要总结&#xff1a; 1. 基础概念 Shell 是操作系统提供的一个命令行解释器&#xff0c;常见的 Shell 类型有 Bash&#x…

Vue全栈开发旅游网项目(11)-用户管理前端接口联调

联调基本步骤 1.阅读接口文档 2.配置接口地址 3.使用axios获取数据 4.将数据设置到模型层 1.发送验证码联调 1.1 配置接口地址 文件地址&#xff1a;src\utils\apis.js //系统相关的接口 const SystemApis {sliderListUrl:apiHost"/system/slider/list/",//发送…