自学Python之心得体会(三)

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,求应发放奖金总数?

程序分析:这是一道分段函数题,当输入的利润处于不同的区间时,所获得的的利润要根据各个区间的百分比来算。

方法一:我自己完全按照分段函数来编程的。用到的语法只有if语句。

代码如下:

l=int(raw_input("please input profit:"))
if l<=10:
    bonus=l*0.1
elif l>10 and l<=20:
    bonus=10*0.1+(l-10)*0.075
elif l>20 and l<=40:
    bonus=10*0.1+10*0.075+(l-20)*0.05
elif l>40 and l<=60:
    bonus=10*0.1+10*0.075+20*0.05+(l-40)*0.03
elif l>60 and l<=100:
    bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03+(l-60)*0.015
else:
    bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03+40*0.015+(l-100)*0.01
print bonus

很low。

方法二:利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

代码如下:

i=int(raw_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 r

只用到了一次循环,比起我的简单很多。

方法三:Python中的列表可以嵌套,外层列表和数组一样,内层的是对象。就和C++的二维数组一样。

代码如下:

Bonus=0;
BonusRateList=[[100,0.010],[60,0.015],[40,0.030],[20,0.050],[10,0.075],[0,0.100]]
Profit=120000;
Profit /=10000;
for i in range(0,len(BonusRateList)):
    if(Profit>BonusRateList[i][0]):
        Bonus +=((Profit-BonusRateList[i][0])*BonusRateList[i][1]);
        Profit=BonusRateList[i][0];
print (Bonus*10000)

你可能感兴趣的:(心得体会)