zoukankan      html  css  js  c++  java
  • python3练习100题——002

    因为特殊原因,昨天没有做题。今天继续~

    原题链接:http://www.runoob.com/python/python-exercise-example2.html

    题目:

    企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

    我的代码:

    def cal(i):
        if i <=100000:
            bonus=i*0.1
        elif  100000<i<=200000:
            bonus=10000+(i-100000)*0.075
        elif 200000<i<=400000:
            bonus=10000+7500+(i-200000)*0.05
        elif 400001<i<=600000:
            bonus=10000+7500+10000+(i-400000)*0.03
        elif 600001<i<=1000000:
            bonus=10000+7500+10000+6000+(i-600000)*0.015
        elif i>1000000:
            bonus=10000+7500+10000+6000+6000+(i-1000000)*0.01    #代码繁琐,而且每一个阶段获得的利润最大值都要手动去算,很麻烦
        print(bonus)

    思考:

    看到了练习的答案,发现可以用for循环来实现,减少了要自己手动输入和计算的工作量!所以每个阶段的分界和利润比,都以可以迭代的列表的形式写入函数中,具体看下面。。。

    def cal2(i):
        profit=[1000000,600000,400000,200000,100000,0]
        rate = [0.01,0.015,0.03,0.05,0.075,0.1]        #同样的index,profit是该rate的下限,便于接下来由大到小迭代
        bonus=0
        for x in range(0,6):
            if i>profit[x]:                    #先判断i属于哪个级别开始算
                bonus += (i-profit[x])*rate[x]
                i=profit[x]                    #把那个级别的下限赋值给i,继续for循环
        print(bonus)

    利用了列表可以迭代的特性,真的方便了很多~本来还想过用字典一一对应地存profit和rate,但是字典是没有顺序的,不能用于这样由大到小的循环判断。

  • 相关阅读:
    087 类的继承
    086 一切皆对象
    085 对象的绑定方法
    在菜鸟教程学 HTML(一)
    生成输出 URL(16.2)
    创建分部视图(7.6.3)
    显示页面链接(7.5.1)
    NuGet 控制台代码
    浏览器对应用程序的根URL发出请求时所发生的情况(结合 DI)
    第 6 章 —— 依赖项注入(DI)容器 —— Ninject
  • 原文地址:https://www.cnblogs.com/drifter/p/9069766.html
Copyright © 2011-2022 走看看