【程序 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')) # 在Python 3中使用input代替raw_input # 根据利润计算奖金 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 变量中。在每个阶梯,它都会检查利润是否超过了该阶梯的上限,如果是,则计算超出部分的奖金,并更新利润为当前阶梯的上限。这样,到下一个循环迭代时,它只会处理剩余未提成的利润部分。
标签:10,提成,bonus,profit,tiers,10%,奖金,利润 From: https://www.cnblogs.com/liu-zhijun/p/18403554