鱼C论坛

 找回密码
 立即注册
查看: 1310|回复: 1

[已解决]个税问题的理解

[复制链接]
发表于 2020-7-3 13:37:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

profit=int(input('Show me the money: '))
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)):
    if profit<=thresholds[i]:
        bonus+=profit*rates[i]
        profit=0
        break
    else:
        bonus+=thresholds[i]*rates[i]
        profit-=thresholds[i]
bonus+=profit*rates[-1]
print(bonus)

这段代码要怎么理解啊...
最佳答案
2020-7-3 14:25:27


希望能帮助到你:
profit=int(input('Show me the money: '))   # 输入当月利润
bonus=0     # 记录奖金

thresholds=[100000,100000,200000,200000,400000]  # 利润区间列表,与下面的提成率 rates 列表对应,用于后面 for 循环判断你输入的当利润达到了哪些值
rates=[0.1,0.075,0.05,0.03,0.015,0.01]    # 用于对应上个列表,然后来对金额与提成率进行计算奖金

for i in range(len(thresholds)):   # 这里大致的意思是用 for 循环遍历列表的位置参数
    if profit<=thresholds[i]:
    #  这里 if 判断当月利润是否小于当前循环到的利润区间,如果小于那么就直接进行计算,之后的 thresholds 利润值更不可能达到了,所以 break 退出循环

        bonus+=profit*rates[i] # 将剩余的金额全部乘以提成率后金额加入你的奖金中去

        profit=0    #  因为符合 if 条件,那么当月的利润不可能超过 100 万 ,而超出 100 万是在循环外部进行计算的,所以这里重新赋值为0
        break  # 退出循环

    else:  # if 条件不满足 说明你的利润大于当前循环到的利润列表对应的值
        bonus+=thresholds[i]*rates[i]   # 加上计算提成后的金额
        profit-=thresholds[i]    # 因为这一部分利润计算完毕,所以我们要减去来准备下次计算下个区间的提成
        
bonus+=profit*rates[-1]  # 这里当你如果钱未超出 100 万,profit 一定都等于 0 ,只有当你超出 100万时 才会有剩余
print(bonus)  # 打印最后计算奖金结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-3 14:25:27 | 显示全部楼层    本楼为最佳答案   


希望能帮助到你:
profit=int(input('Show me the money: '))   # 输入当月利润
bonus=0     # 记录奖金

thresholds=[100000,100000,200000,200000,400000]  # 利润区间列表,与下面的提成率 rates 列表对应,用于后面 for 循环判断你输入的当利润达到了哪些值
rates=[0.1,0.075,0.05,0.03,0.015,0.01]    # 用于对应上个列表,然后来对金额与提成率进行计算奖金

for i in range(len(thresholds)):   # 这里大致的意思是用 for 循环遍历列表的位置参数
    if profit<=thresholds[i]:
    #  这里 if 判断当月利润是否小于当前循环到的利润区间,如果小于那么就直接进行计算,之后的 thresholds 利润值更不可能达到了,所以 break 退出循环

        bonus+=profit*rates[i] # 将剩余的金额全部乘以提成率后金额加入你的奖金中去

        profit=0    #  因为符合 if 条件,那么当月的利润不可能超过 100 万 ,而超出 100 万是在循环外部进行计算的,所以这里重新赋值为0
        break  # 退出循环

    else:  # if 条件不满足 说明你的利润大于当前循环到的利润列表对应的值
        bonus+=thresholds[i]*rates[i]   # 加上计算提成后的金额
        profit-=thresholds[i]    # 因为这一部分利润计算完毕,所以我们要减去来准备下次计算下个区间的提成
        
bonus+=profit*rates[-1]  # 这里当你如果钱未超出 100 万,profit 一定都等于 0 ,只有当你超出 100万时 才会有剩余
print(bonus)  # 打印最后计算奖金结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 04:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表