# 第17期—奖金计算
Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。
# 1 问题描述
企业发放的奖金根据利润提成。
利润低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成
级数 | 利润 | 奖金提成比例 |
---|---|---|
1 | 不超过10万元 | 10% |
2 | 超过10万元至20万元的部分 | 7.5% |
3 | 超过20万元至40万元的部分 | 5% |
4 | 超过40万元至60万元的部分 | 3% |
5 | 超过60万元至100万元的部分 | 1.5% |
6 | 超过100万元的部分 | 1% |
输入利润,求应发放奖金总数~
# 2 解题思路
- 首先用input函数获取用户输入的利润总额
- 然后根据奖金提成比例计算奖金
- 最后输出计算结果
# 3 解题方法
# 方法一
profit = float(input("请输入利润,单位为万元:"))
assert profit >= 0, "请输入非负数!"
if profit <= 10:
bonus = profit * 0.1
elif 10 < profit <= 20:
bonus = 10 * 0.1 + (profit-10) * 0.075
elif 20 < profit <= 40:
bonus = 10 * 0.1 + 10 * 0.075 + (profit-20) * 0.05
elif 40 < profit <= 60:
bonus = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + (profit-40) * 0.03
elif 60 < profit <= 100:
bonus = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit-60) * 0.015
else:
bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (profit-100) * 0.01
print(f"奖金为{bonus:0.2f}万元")
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
第1行: 用input函数获取用户输入的利润总额,float函数转化为浮点数,赋值给变量profit
第2行: 用assert断言函数限定变量profit大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入非负数!”
第4-15行: 用if...elif...else语句对用户输入的利润总额进行判断,根据奖金提成比例计算奖金
第17行: print函数输出最终计算结果,保留两位小数
# 方法二
profit = float(input("请输入利润,单位为万元:"))
assert profit >= 0, "请输入非负数!"
bonus = 0
value = [100, 60, 40, 20, 10, 0]
rates = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
for i in range(6):
if profit > value[i]:
temp = (profit - value[i]) * rates[i]
bonus += temp
profit = value[i]
print(f"奖金为{bonus:0.2f}万元")
2
3
4
5
6
7
8
9
10
11
12
第1行: 用input函数获取用户输入的利润总额,float函数转化为整型,赋值给变量profit
第2行: 用assert断言函数限定变量profit大于0,若大于0,执行后面的代码,否则报错“AssertionError: 请输入非负数!”
第4行: 创建存储奖金总额的变量bonus,初始赋值为0
第5行: 创建列表value,传入的参数为利润的界限值
第6行: 创建列表rates, 传入的参数为对应的奖金提成比例
第7行: 由于列表value共有6个参数,即利润总额划分为6个档位,用for循环遍历value这一列表中每一个元素的索引值
第8行: 当用户输入的利润总额大于列表value中的利润值时,进入循环
第9行: 通过列表的索引,计算每一个档位的奖金
第10行: 在每次循环中,每个档位的奖金temp与变量bonus相加,并将求和结果再赋值给变量bonus
第11行: 为变量 profit 赋值为value[i],直到变量 profit不满足条件,退出循环
第12行: print函数输出最终计算结果,保留两位小数
以利润 105 万为例
第一次循环,i = 0,
temp = (105 - 100) * 0.01 = 5 * 0.01
bomus = 0 + 5 * 0.01
profit = 100
第二次循环,i = 1,
temp = (100 - 60) * 0.015 = 40 * 0.015
bomus = 0 + 5 * 0.01 + 40 * 0.015
profit = 60
第三次循环,i = 2,
temp = (60 - 40) * 0.03= 20 * 0.03
bomus = 0 + 5 * 0.01 + 40 * 0.015 + 20 * 0.03
profit = 40
第四次循环,i = 3,
temp = (40 - 20) * 0.05= 20 * 0.05
bomus = 0 + 5 * 0.01 + 40 * 0.015 + 20 * 0.03 + 20 * 0.05
profit = 20
第五次循环,i = 4,
temp = (20 - 10) * 0.075= 10 * 0.075
bomus = 0 + 5 * 0.01 + 40 * 0.015 + 20 * 0.03 + 20 * 0.05 + 10 * 0.075
profit = 10
第六次循环,i = 5,
temp = (10 - 0) * 0.1= 10 * 0.1
bomus = 0 + 5 * 0.01 + 40 * 0.015 + 20 * 0.03 + 20 * 0.05 + 10 * 0.075 + 10 * 0.1
profit = 0
退出循环
# 4 视频解析
高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码