题目:企业发放的奖金根据利润提成。利润(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