第二题:公司发奖金:利润(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,求应发放奖金总数
方法一:用多重if elif来循环实现
for n in range(10 ):#循环,可以连续输入10次
i=int(raw_input("利润:"))if i<=0:
print"无奖金"
elif i<=10:
award=i*0.1
elif (i>10) and (i<20):
award=10*0.1+(i-10)*0.075
elif i>20 and i<40:
award=10*0.1+10*0.75+(i-20)*0.05
elif i>40 and i<60:
award=10*0.1+10*0.75+20*0.05+(i-40)*0.03
elif i>60 and i<100:
award=10*0.1+10*0.05+20*0.05+20*0.03+(i-60)*0.015
else:
award=10*0.1+10*0.05+20*0.05+20*0.03+40*0.015+(i-100)*0.001
print award
方法二:把数据放到一个列表中,两个列表中的各数是对应的
i=int(raw_input("净利润:"))
array=[1000000,600000,400000,200000,100000,0]
rate=[0.01,0.015,0.03,0.05,0.075,0.1]
r=0
for idx in range(6):
if i>array[idx]:#此处就把利润分了等级,第一部分小于array[idx]的,第二部分小于array[idx-1]大于array[idx]的,下面就直接计算出第二部分得到的奖金,而第一部分还要进行循环,直到i>array[5]即利润在0到100000之间
r+=(i-array[idx])*rate[idx]#比如12万:此处计算2万的
i=array[idx]#比如12万的,此处i=10万,接着判断i>array[idx]
print r
还没有发现什么别的好方法,有不一样的同学们,可以留言一起交流,学习