当前位置:网站首页>实例002:“个税计算” 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.

实例002:“个税计算” 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.

2022-07-05 08:16:00 懒笑翻

实例002:“个税计算”

# **题目:**企业发放的奖金根据利润提成。
# 利润(I)低于或等于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%提成,
# 从键盘输入当月利润I,求应发放奖金总数?
#题目分析
"""
当我们进行手算的时候,是这样算的:假设是1500000,是大于10000万的,下面我们来是手算:
10w*0.1+10w*0.075+20w*0.05+20w*0.03+40w*0.015+50w*0.01
"""
# **程序分析:**分区间计算即可

        依照我们手算的过程,在算法中,我们也根据区间来计算,如果输入的利润profit小于或等于 thresholds[i]时,则用profit计算完当前区间对应的利率加在奖金bonus上后就退出,否则就用当前区间对应的金额*对应区间的利率加在奖金bonus上后,profit再减掉当前区间对应的金额再进入for循环。在金额区间内的利率是有对应区间段利率的,高于100万的部分对应利率1%也就是0.01。如果在前面我们的利润是小于等于100万的,那么profit在走出循环的时候是0,在输出发放的奖金总数前计算的高于100万的奖金时就是0*0.01=0。

for j in range(10):  # 可以测试10次
    profit = int(input('请输入你的利润金额: '))  #input输入的是字符串类型,要用int()转为整数
    bonus = 0
    thresholds = [100000, 100000, 200000, 200000, 400000]  # 分区间计算
    rates = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
    for i in range(len(thresholds)):

        print(profit, "--", i, "thresholds[i]", thresholds[i], "rates[i]", rates[i])

        if profit <= thresholds[i]:
            bonus += profit * rates[i]
            profit = 0
            break
        else:
            bonus += thresholds[i] * rates[i]
            profit -= thresholds[i]
        print(profit)
    bonus += profit * rates[-1]  # 这里就是计算高于100w部分的奖金
    print(" 发放的奖金总数为: ", bonus)

输出结果:

请输入你的利润金额: 1500000
1500000 -- 0 thresholds[i] 100000 rates[i] 0.1
1400000
1400000 -- 1 thresholds[i] 100000 rates[i] 0.075
1300000
1300000 -- 2 thresholds[i] 200000 rates[i] 0.05
1100000
1100000 -- 3 thresholds[i] 200000 rates[i] 0.03
900000
900000 -- 4 thresholds[i] 400000 rates[i] 0.015
500000
 发放的奖金总数为:  44500.0

原网站

版权声明
本文为[懒笑翻]所创,转载请带上原文链接,感谢
https://lanxf.blog.csdn.net/article/details/125606762