练习题 2 的网址:

www.runoob.com/python/pyth…


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

思路

这道题目可以根据每个奖金发放区间来分界,先分别定义两个数组,一个数组是存放每个区间奖金的提成比例,记为rat;另一个数组是记录每个发放区间的上边界,表示当超过该边界时候,直接利用上边界乘以该区间的提成比例,例如对于在 10 万元以下的这个区间,就是上边界为 10 万,然后超过后,该区间发放奖金就是100000*0.1

然后我们先考虑利润超过 100 万的情况,依次降低利润,对应每种情况。

代码实现

def pay_award():
    profit = int(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 profit > arr[idx]:
            # 当前区间的利润
            r += (profit - arr[idx]) * rat[idx]
            print('current award=', (profit - arr[idx]) * rat[idx])
            # 重置下一个区间起始奖金数量
            profit = arr[idx]
    return r
复制代码

简单的测试例子:

# 利润是 11000
净利润:11000
current award= 1100.0
award= 1100.0

# 利润是 1100000 (110 万)
净利润:1100000
current award= 1000.0
current award= 6000.0
current award= 6000.0
current award= 10000.0
current award= 7500.0
current award= 10000.0
award= 40500.0

复制代码

源代码在:

github.com/ccc013/Code…

或者点击原文,也可以查看源代码。


欢迎关注我的微信公众号 -- 机器学习与计算机视觉,或者扫描下方的二维码,大家一起交流,学习和进步!

往期精彩推荐

Python-100 练习系列
学习笔记
数学学习笔记
Github 项目 & 资源教程推荐
  • python

    Python (发音:[ paiθ(ə)n; (US) paiθɔn ]n. 蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发…

    7951 引用 • 22 回帖 • 2 关注
感谢    赞同    分享    收藏    关注    反对    举报    ...