zoukankan      html  css  js  c++  java
  • Python练习题 002:奖金计算

    【Python练习题 002】企业发放的奖金根据利润提成。利润(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...elif... 的循环函数,我自己看着都觉得累啊…… 

    I = float(input("请输入当月利润,单位为万元:"))
    if I <= 10:
        bns = 10 * 0.1
    elif 10 < I <= 20:
        bns = 10 * 0.1 + (I-10) * 0.075
    elif 20 < I <= 40:
        bns = 10 * 0.1 + 10 * 0.075 + (I-20) * 0.05
    elif 40 < I <= 60:
        bns = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + (I-40) * 0.03
    elif 60 < I <= 100:
        bns = 10 * 0.1+ 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (I-60) * 0.015
    elif I > 100:
        bns = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (I-100) * 0.015
    print(bns,'万元')
    

    不过后来,查了下别人的做法,果然清新很多啊: 

    I = float(input("请输入当月利润,单位为万元:"))
    bns = 0  #初始化奖金总数
    cat = [100, 60, 40, 20, 10, 0]  #金额分6档
    pct = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]  #每档的提成比例
    for i in range(6):
        if I > cat[i]:
            I = I - cat[i]  #注意:刨掉档位金额后,应将值重新赋给I,每一档位分开计算
            bns = bns + I * pct[i]  #每一档位的奖金累计相加
    print('当月应发放奖金总数为%s万元' % bns)
    

      

    倒也不难理解:从高到低检查利润是否超过设置好的档位,超了就先计算这部分奖金,剩下的再继续逐级检查档位,累积计算奖金就可以了。

    唉,我数学真的很烂……

    PS:为啥代码框里最后一行总是显示异常呢……原来是模板的问题。换了个模板,代码框显示就正常了~~

    ++++++++++++++++++++++++++++++++++++++++++++++

    题目出处:编程语言入门经典100例【Python版】

  • 相关阅读:
    Xib和storyboard对比
    IOS中用模型取代字典的好处
    IOS中UIButton和UIImageView的区别
    Response对象
    ASP.NET内置对象
    ASP.NET最常用的页面生命周期事件
    构造函数与析构函数
    C#程序设计基础——类、对象、方法
    CI框架分页(不解错误)
    Linux 下直连ipad mini充电(实战)
  • 原文地址:https://www.cnblogs.com/iderek/p/5952367.html
Copyright © 2011-2022 走看看