Python编写函数,计算某个员工的奖金发放额度,要求输入员工的营业额,输出对应的奖金总额

奖金计算规则如下:
营业额低于或等于20万元时,奖金为营业额的11%。营业额高于20万元,低于40万元时,低于20万元的部分按11%计算,高于20万元的部分,按8.5%计算; 依此类推,40万到60万之间时高于40万元的部分,按3%计算; 60万到100万之间时,高于60万元的部分,按1.5%计算;高于100万元时,超过100万元的部分按1%计算。


一些感悟:在刚敲这道题的代码的时候我只是单纯地按照数学的思维去敲,但是在这过程中会发现会做很多重复性的工作,于是想到了去使用递归。不妨先从数学的角度看看这道题奖金的计算过程。

设营业额为x

  • 当营业额低于或等于20万元时(x<=20),奖金为:0.11x
  • 当营业额高于20万元,低于40万元时(20<x<=40),奖金为:20×0.11+0.85(x-20)
  • 当营业额在40万到60万之间时(40<x<=60),奖金为:20×0.11+20×0.85+0.03(x-40)
  • 当营业额在60万到100万之间时(60<x<=100),奖金为:20×0.11+20×0.85+20×0.03+0.015(x-40)
  • 当营业额高于100万元时(x>100),奖金为:20×0.11+20×0.85+20×0.03+40×0.015+0.01(x-40)

从中可以发现要计算包括不同层次营业额的奖金,要依次单纯的列举出来重复的步骤有很多,这时就想到使用递归(正好课上也讲到这部分内容),于是决定自己写个递归试试。这里的递归通俗的理解,可以把每个条件语句想象成入口,return语句是出口。条件语句决定了应该进哪个门,return里边再调用自身就相当于出来的时候要通过不同的门,这样使用递归后比我之前写的代码要简洁很多。大致的思路如下:在这里插入图片描述

以下是最终代码:

def Cal_bonus(n: int) -> float:
    """按营业额不等份额分段计算奖金,输出每段奖金数和奖金总额"""

    # 营业额低于或等于20万元时
    if n <= 20:
        m = n
        b = m * 0.11
        print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '11.00%', b))
        # 由于数字的长度不同,所以为了美观打印,数字单独需要右对齐,奖金保留两位小数,以下方法相同
        return b

    # 营业额高于20万元,低于40万元时
    elif 20 < n <= 40:
        m = n - 20
        b = m * 0.085
        print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '8.50%', b))
        return Cal_bonus(20) + b

    # 营业额高于40万元,低于60万元时
    elif 40 < n <= 60:
        m = n - 40
        b = m * 0.03
        print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '3.00%', b))
        return Cal_bonus(40) + b

    # 营业额高于60万元,低于100万元时
    elif 60 < n <= 100:
        m = n - 60
        b = m * 0.015
        print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '1.50%', b))
        return Cal_bonus(60) + b

    # 营业额高于100万元时
    else:
        m = n - 100
        b = m * 0.01
        print('*金额{:>2}万,比率{:>6},奖金{:.2f}万'.format(int(m), '1.00%', b))
        return Cal_bonus(100) + b


def main():
    turnover = float(input('请输入营业额(万元):'))
    print('******奖金总计为:%.2f万元******' % Cal_bonus(turnover))


if __name__ == "__main__":
    main()

运算结果如下:
输入14:
在这里插入图片描述
输入36:
在这里插入图片描述
输入58:
在这里插入图片描述
输入99:
在这里插入图片描述
输入101:
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个Python编写计算分段函数的程序,可以根据输入的x值计算对应的y值。 ``` def piecewise_function(x): if x <= -1: return -1 elif -1 < x <= 0: return x + 1 elif 0 < x <= 1: return x else: return 2 x = float(input("请输入x值:")) y = piecewise_function(x) print("对应的y值为:", y) ``` 该程序定义了一个名为"piecewise_function"的函数,根据输入的x值返回对应的y值。在函数中,使用了if-elif-else语句对输入的x值进行分段处理,根据所处的分段计算对应的y值。 程序中使用了"input"函数获取用户输入的x值,并将其转化为浮点数类型。最后使用"print"函数输出计算得到的y值。 注意,本程序只是一个示例,实际计算分段函数时需要根据具体的函数表达式进行编写。 ### 回答2: 分段函数,又称为分段定义函数,是指将定义域分成几个不同的区间,每个区间内有不同的函数解析式,构成一个复杂的函数Python作为一种高级编程语言,可以非常方便地编写计算分段函数的程序。 首先,我们需要定义每个区间的解析式。以一个简单的例子 y = {2x,x<0; x^2,0<=x<5; 3x-4,x>=5 } 为例,我们可以用以下Python代码来实现: ```python def segment_function(x): if x < 0: return 2 * x elif 0 <= x < 5: return x ** 2 else: return 3 * x - 4 ``` 这段代码定义了一个名为segment_function的函数,该函数输入一个x值,输出y值。根据输入的x值,函数会判断x所在的区间并计算函数解析式。 接下来,我们可以使用Python内置的input函数来获取用户输入的x值,并调用上面定义的segment_function函数计算y值,并使用print函数将结果输出,示例如下: ```python x = float(input("请输入x的值:")) y = segment_function(x) print("在输入x={}的情况下,y的值为{}".format(x, y)) ``` 这段代码会首先获取用户输入的x值,接着调用segment_function函数计算y值,并使用字符串的format方法将结果输出。 当然,我们也可以将多个区间的解析式存储在一个字典中,通过输入的x值获取对应的解析式进行计算。以我们之前的例子为例,代码如下: ```python def segment_function(x): segment_dict = { "x < 0": lambda x: 2 * x, "0 <= x < 5": lambda x: x ** 2, "x >= 5": lambda x: 3 * x - 4, } for segment, func in segment_dict.items(): condition, expression = segment.split(":") if eval(condition, globals(), {"x": x}): return eval(expression, globals(), {"x": x}) x = float(input("请输入x的值:")) y = segment_function(x) print("在输入x={}的情况下,y的值为{}".format(x, y)) ``` 这段代码创建了一个名为segment_dict的字典,其中包含每个区间所对应的条件和函数解析式,使用eval函数输入的x值进行运算,最终输出对应的y值。 总之,Python的语法简洁,使其非常适合编写任何类型的计算程序,包括计算分段函数的程序。 ### 回答3: 分段函数在数学中很常见,Python编写程序计算分段函数也十分常见。下面是一种计算分段函数的程序,可以根据输入的x值计算输出对应函数y值。 首先,我们需要了解分段函数的定义。分段函数通常是由两个或多个不同的函数组合而成的,每个函数在定义域内的某些区间内有效。在这些区间之外,分段函数并没有定义。 例如,一个简单的分段函数可以表示为: ``` f(x) = {x, 0 <= x < 1 {x^2, 1 <= x <= 2 ``` 这个函数在x的取值范围内有两段定义,0到1之间为x,1到2之间为x的平方。 现在,我们可以使用Python编写一个计算分段函数的程序。这个程序可以从用户输入中读取x的值,然后使用一系列if-elif语句计算对应函数y值。 下面是一个简单的Python程序,可以计算上述分段函数的值: ``` x = float(input("请输入x的值:")) if x >= 0 and x < 1: y = x elif x >= 1 and x <= 2: y = x**2 else: print("x的值无效") print("对于x = ", x, ",分段函数的值为 y = ", y) ``` 在这个程序中,我们首先使用`float(input())`语句获取用户输入的x值,并将其转换为浮点数以便计算。接着,使用if-elif语句计算对应函数y值。 其中,第一个if语句检查x的值是否在0到1之间,如果是,则使用y = x计算对应函数y值;第二个elif语句检查x的值是否在1到2之间,如果是,则使用y = x**2计算对应函数y值。如果x的值不在这两个区间之内,则输出“x的值无效”。 最后,程序输出计算后的y值。我们可以使用类似这样的方法来计算任意分段函数的值,只需根据函数定义,编写相应的if-elif语句即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值