【程序 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,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
方法一:
# 定义各个阶梯的基准奖金
bonus1 = 100000 * 0.1
bonus2 = bonus1 + 100000 * 0.075  
bonus4 = bonus2 + 200000 * 0.05
bonus6 = bonus4 + 200000 * 0.03
bonus10 = bonus6 + 400000 * 0.015

# 从用户输入获取利润值
i = int(input('请输入利润:\n'))  

# 根据利润计算奖金
if i <= 100000:
    bonus = i * 0.1
elif i <= 200000:
    bonus = bonus1 + (i - 100000) * 0.075
elif i <= 400000:
    bonus = bonus2 + (i - 200000) * 0.05
elif i <= 600000:
    bonus = bonus4 + (i - 400000) * 0.03
elif i <= 1000000:
    bonus = bonus6 + (i - 600000) * 0.015
else:
    bonus = bonus10 + (i - 1000000) * 0.01

# 输出奖金
print('奖金 =', bonus)

# 现在,代码的逻辑是这样的:
# 首先,计算出各个利润阶梯的基准奖金(即达到该阶梯下限时的奖金)。
# 然后,通过用户输入获取利润值。
# 接下来,使用一系列的 if-elif 语句来根据利润值计算奖金。每个 elif 块都对应一个利润阶梯,并计算出在该阶梯内的额外奖金。
# 最后,输出计算得到的奖金。
# 请注意,这段代码假设用户输入的是一个整数。如果您希望支持浮点数输入(即带有小数的金额),您应该将 int(input(...)) 替换为 float(input(...))。同时,由于奖金计算涉及到货币,因此在实际应用中可能需要考虑四舍五入到适当的小数位数,以确保结果的准确性。

方法二:

# 这个问题可以通过编写一个函数来解决,该函数接收利润值作为输入,并根据给定的提成规则计算奖金。以下是一个 Python 解决方案:
def calculate_bonus(profit):
    # 定义提成阶梯和对应的提成比例
    tiers = [1000000, 600000, 400000, 200000, 100000, 0]
    rates = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]

    bonus = 0  # 初始化奖金为0
    for i in range(len(tiers)):
        if profit > tiers[i]:
            bonus += (profit - tiers[i]) * rates[i]  # 计算当前阶梯的奖金
            profit = tiers[i]  # 更新利润为当前阶梯的上限

    return bonus


# 从键盘输入当月利润
profit_input = input("请输入当月利润(单位:元):")
profit = float(profit_input)  # 将输入的字符串转换为浮点数

# 计算并输出应发放奖金总数
bonus = calculate_bonus(profit)
print(f"应发放奖金总数为:{bonus} 元")

# 注意:这个解决方案假设输入的利润是非负整数或浮点数。如果输入可能是负数或无效值,你可能需要添加额外的错误检查和处理逻辑。
# 另外,这个解决方案使用了长整型的概念,但在 Python 3 中,整数类型是无限精度的,所以不需要特别声明为长整型。如果你在使用其他编程语言,可能需要注意整数类型的大小限制。
# 解释:
# tiers 列表包含了各个提成阶梯的上限值,从高到低排列。
# rates 列表包含了与 tiers 对应的提成比例。
# calculate_bonus 函数通过遍历 tiers 和 rates,计算每个阶梯的奖金,并累加到 bonus 变量中。在每个阶梯,它都会检查利润是否超过了该阶梯的上限,如果是,则计算超出部分的奖金,并更新利润为当前阶梯的上限。这样,到下一个循环迭代时,它只会处理剩余未提成的利润部分。

  

  

posted on 2024-09-08 21:46  柳志军  阅读(155)  评论(0)    收藏  举报