奖金计算规则如下:
营业额低于或等于20万元时,奖金为营业额的11%。营业额高于20万元,低于40万元时,低于20万元的部分按11%计算,高于20万元的部分,按8.5%计算; 依此类推,40万到60万之间时高于40万元的部分,按3%计算; 60万到100万之间时,高于60万元的部分,按1.5%计算;高于100万元时,超过100万元的部分按1%计算。


一些感悟:在刚敲这道题的代码的时候我只是单纯地按照数学的思维去敲,但是在这过程中会发现会做很多重复性的工作,于是想到了去使用递归。不妨先从数学的角度看看这道题奖金的计算过程。

设营业额为x

  • 当营业额低于或等于20万元时(x<=20),奖金为:0.11x
  • 当营业额高于20万元,低于40万元时(20<x<=40),奖金为:20×0.11+0.85(x-20)
  • 当营业额在40万到60万之间时(40<x<=60),奖金为:20×0.11+20×0.85+0.03(x-40)
  • 当营业额在60万到100万之间时(60<x<=100),奖金为:20×0.11+20×0.85+20×0.03+0.015(x-40)
  • 当营业额高于100万元时(x>100),奖金为:20×0.11+20×0.85+20×0.03+40×0.015+0.01(x-40)

从中可以发现要计算包括不同层次营业额的奖金,要依次单纯的列举出来重复的步骤有很多,这时就想到使用递归(正好课上也讲到这部分内容),于是决定自己写个递归试试。这里的递归通俗的理解,可以把每个条件语句想象成入口,return语句是出口。条件语句决定了应该进哪个门,return里边再调用自身就相当于出来的时候要通过不同的门,这样使用递归后比我之前写的代码要简洁很多。大致的思路如下:

以下是最终代码:

def Cal_bonus(n: int) -> float:"""按营业额不等份额分段计算奖金,输出每段奖金数和奖金总额"""# 营业额低于或等于20万元时if n <= 20:m = nb = m * 0.11print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '11.00%', b))# 由于数字的长度不同,所以为了美观打印,数字单独需要右对齐,奖金保留两位小数,以下方法相同return b# 营业额高于20万元,低于40万元时elif 20 < n <= 40:m = n - 20b = m * 0.085print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '8.50%', b))return Cal_bonus(20) + b# 营业额高于40万元,低于60万元时elif 40 < n <= 60:m = n - 40b = m * 0.03print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '3.00%', b))return Cal_bonus(40) + b# 营业额高于60万元,低于100万元时elif 60 < n <= 100:m = n - 60b = m * 0.015print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '1.50%', b))return Cal_bonus(60) + b# 营业额高于100万元时else:m = n - 100b = m * 0.01print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '1.00%', b))return Cal_bonus(100) + bdef main():turnover = float(input('请输入营业额(万元):'))print('******奖金总计为:%.2f万元******' % Cal_bonus(turnover))if __name__ == "__main__":main()

运算结果如下:
输入14:

输入36:

输入58:

输入99:

输入101:

Python编写函数,计算某个员工的奖金发放额度,要求输入员工的营业额,输出对应的奖金总额相关推荐

  1. 使用python编写函数计算f(i),f(i)的计算公式为:f(i)=1/2+2/3+...+i/(i+1)

    代码实现: def fn(i):if i==1:return 0.5else:a=float(i)/float(i+1) res=a+fn(i-1)return resn = int(input(&q ...

  2. python计算整数各位数字之和_编写函数,计算一个整数各位数字之和

    话题:编写函数,计算一个整数各位数字之和回答:这个关键是怎么得到每位数, #includeint sum_num(int num)//得到每位数的函数 { int sum=0; while(num10 ...

  3. 6-1 编写函数计算一个或不特定多个数的乘积(高教社,《Python编程基础及应用》习题8-6)分数 5

    编写函数计算一个或不特定多个数的乘积(高教社,<Python编程基础及应用>习题8-6) 函数接口定义: defcaculate(*t) 打*号的参数t接受多个参数成员,参数成员预期为整数 ...

  4. python编写函数_如何用Python编写自己喜欢的R函数

    python编写函数 数据科学和机器学习的伟大现代斗争之一是" Python vs. R". 毫无疑问,近年来两者都已经取得了巨大的发展,成为数据科学,预测分析和机器学习的顶级编程 ...

  5. 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...

    [判断题]卤素灯泡是在灯泡内充入氟.氯等卤素气体. [单选题]我国刑法第12条关于溯及力的规定采取的是( ). [填空题]本地局域网 LAN 内, () 和无绳电话速率较低,主流带宽是 100kbps ...

  6. c语言学习-编写函数计算式子:S=2*1*1!+2*2*2!+……+2n*n!的值。要求编写自定义函数分别求解2n和n!,在编写求解S的函数。

    编写函数计算式子:S=2 * 1 * 1!+2 * 2 * 2!+--+2n * n!的值.要求编写自定义函数分别求解2n和n!,在编写求解S的函数. 程序流程图: 代码: #include<s ...

  7. python编写函数 avg(lst),参数 lst 是一个列表。函数可以返回 lst 的整数平均值,调用 avg(lst) 函数求每个学生的平均成绩。

    python编写函数 avg(lst),参数 lst 是一个列表.函数可以返回 lst 的整数平均值,调用 avg(lst) 函数求每个学生的平均成绩. 已知成绩列表 s={'小李':[77,54], ...

  8. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算accuray、准确率指标

    R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算accuray指标 目录

  9. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算Specificity、特异度指标

    R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算Specificity指标 目录

  10. C语言编程>第五周 ⑤ 编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果。

    例题:编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果. 第一种方法: 代码如下: #include <stdio.h> int abc(int,in ...

最新文章

  1. 在Linux上分析硬件检测日志
  2. python培训机构推荐-Python培训班哪家好?老男孩Python入门学习
  3. eclipse中的汉字极小的解决方案(转载)
  4. java 逐行写入csv_go|使用go读写CSV文件
  5. 关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const
  6. 事件CEvent的使用
  7. 超越 Windows 时代!微软 Build 大会都透露了啥?
  8. Git——比较版本区别【git status / git diff】
  9. 1.阿里云短信验证操作步骤
  10. 区块链 以太坊 solidity require revert assert
  11. XLSTransformer生成excel文件简单演示样例
  12. python pygame实战1: 小球碰撞balls collision
  13. FireMonkey TListView 使用 LiveBindings 绑定 TObjectList
  14. flex blazeds java_flex blazeds连接java
  15. 华硕电脑光驱位换成固态硬盘
  16. c语言闹钟程序教学,C++实现闹钟程序的方法
  17. 【论文泛读】Leveraging Distribution Alignment via Stein Path for Cross-Domain Cold-Start Recommendation
  18. 上海居住证转户口证攻略
  19. eBPF系列学习(4)了解libbpf、CO-RE (Compile Once – Run Everywhe) | 使用go开发ebpf程序(云原生利器cilium ebpf )
  20. C语言中的 @ 符号

热门文章

  1. HTML入门笔记案例展示(1)
  2. 软工专硕考研_18武汉理工大学软工专硕考研经验分享(学渣版)
  3. android圆角设置
  4. matlab中cell是什么意思,matlab中cell的用法
  5. spark、hadoop、storm、solr、es在车辆分析上的分析与比较
  6. maven中遇到的问题,报错
  7. 新手树莓派4B安装Supervised+Home Assistant及问题解决
  8. Maven手动添加dependency(以Oracle JDBC为例)
  9. 图解域名解析成IP的全过程(你浏览器摁下一个网址后发生了啥?)
  10. 项目初始化报 404 Not Found - GET https://registry.npmjs.org