|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
这段代码要怎么理解啊...
希望能帮助到你:
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) # 打印最后计算奖金结果
|
|