第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}万元")
View Code

第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}万元")
View Code

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
退出循环

 

posted @ 2022-01-06 16:58  LG03  阅读(367)  评论(0编辑  收藏  举报