linnnb 发表于 2020-7-3 13:37:07

个税问题的理解

题目 企业发放的奖金根据利润提成。利润(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=
rates=
for i in range(len(thresholds)):
    if profit<=thresholds:
      bonus+=profit*rates
      profit=0
      break
    else:
      bonus+=thresholds*rates
      profit-=thresholds
bonus+=profit*rates[-1]
print(bonus)

这段代码要怎么理解啊...

Twilight6 发表于 2020-7-3 14:25:27



希望能帮助到你:

profit=int(input('Show me the money: '))   # 输入当月利润
bonus=0   # 记录奖金

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

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

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

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

    else:# if 条件不满足 说明你的利润大于当前循环到的利润列表对应的值
      bonus+=thresholds*rates   # 加上计算提成后的金额
      profit-=thresholds    # 因为这一部分利润计算完毕,所以我们要减去来准备下次计算下个区间的提成
      
bonus+=profit*rates[-1]# 这里当你如果钱未超出 100 万,profit 一定都等于 0 ,只有当你超出 100万时 才会有剩余
print(bonus)# 打印最后计算奖金结果
页: [1]
查看完整版本: 个税问题的理解