第17期—奖金计算
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}万元")
第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}万元")
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
退出循环