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,但是字典是没有顺序的,不能用于这样由大到小的循环判断。

  • 相关阅读:
    ros::NodeHandle成员介绍
    ros::NodeHandle成员介绍
    odom_out_and_back.cpp
    odom_out_and_back.cpp
    c++实现ros by example volume1 例子timed_out_and_back功能
    SQL语句进阶
    数据库基础(常用的SQL)
    安装Mysql
    1.初识数据库
    (MYSQL错误解决)本地计算机上的MYSQL服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
  • 原文地址:https://www.cnblogs.com/drifter/p/9069766.html
Copyright © 2011-2022 走看看