python每日一练(2)

题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。'''

i = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if i > arr[idx]:
        r += (i - arr[idx]) * rat[idx]
        print((i-arr[idx]) * rat[idx])
        i = arr[idx]
        #print(i)
print("奖金提成共",r)

以上是楼主给出的答案,比较简洁
步骤解析:
1.从键盘输入利润“I”
2.定义列表arr,存放题目给出的利润等级
3.定义列表rat,存放对应利润等级的提成百分比
4.定义“r”,用于累加存放计算出来的提成

i = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0

5.for循环
6.判断利润是否大于最大的利润等级,如果输入的利润(以2000000为例)大于arr[0]也就是1000000(第一次循环),则按照高于1000000的方案来计算提成,通过idx可以定位利润等级对应的提成比例
7.如果利润不大于最大等级,则不走if判断,idx自增进入下一轮比较

for idx in range(0,6):                                           #对应arr中的6个元素
    if i > arr[idx]:                                          
        r += (i - arr[idx]) * rat[idx]                            #idx根据利润等级找到对应比例
        print((i-arr[idx]) * rat[idx])
        i = arr[idx]
        #print(i)
print("奖金提成共",r)
  
  打印如下:
 净利润:2000000                                                  #键盘输入2000000
10000.0
6000.0
6000.0
10000.0
7500.0
10000.0
奖金提成共 49500.0

7.最后一点,就是代码中倒数第二行有一个#print(i),这个是由于最开始一时没有理解,加的打印,如下:

for idx in range(0,6):                                           
    if i > arr[idx]:                                          
        r += (i - arr[idx]) * rat[idx]                            
        #print((i-arr[idx]) * rat[idx])
        i = arr[idx]
        print(i)
#print("奖金提成共",r)

打印结果:
净利润:2000000
1000000
600000
400000
200000
100000
0

由此看出,在第一次输入利润 i 后,系统会自动将 i 赋值成 arr[] 中的下一等级,并使用其进行计算

另一种解法(还有一些类似的,但思路相同),可能会是大部分人的选择:

def fun(i):
    if i <= 100000:
        print (i*0.1)
    elif i <= 200000:
        print (10000+(i-100000)*0.075)
    elif i<= 400000:
        print (17500+(money-200000)*0.05)
    elif i <= 600000:
        print (27500+(i-400000)*0.03)
    elif i <= 1000000:
        print (33500+(i-600000)*0.015)
    elif i > 1000000:
        print (39500+(i-1000000)*0.01)

以上题目及答案来自:
https://fishc.com.cn/forum.php?mod=viewthread&tid=84668&highlight=%C3%BF%C8%D5%D2%BB%CC%E2%2B2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值