任务要求
企业发放的奖金是根据当月利润(I)的不同区间按比例提成的。具体规则如下:
- 当利润(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.输入利润值:从用户那里获取当月的利润值(I)。
2.分段计算奖金:根据利润值所在的区间,分别计算各部分的奖金,并累加得到总奖金。
3.输出结果:将计算出的总奖金输出给用户。
实现步骤
def calculate_bonus(profit):
bonus = 0.0
profit *= 1e4 # 利润单位转换为万元
if profit <= 1e5:
bonus += profit * 0.1
elif profit <= 2e5:
bonus += 1e5 * 0.1
bonus += (profit 1e5) * 0.075
elif profit <= 4e5:
bonus += 1e5 * 0.1
bonus += (2e5 1e5) * 0.075
bonus += (profit 2e5) * 0.05
elif profit <= 6e5:
bonus += 1e5 * 0.1
bonus += (2e5 1e5) * 0.075
bonus += (4e5 2e5) * 0.05
bonus += (profit 4e5) * 0.03
elif profit <= 1e6:
bonus += 1e5 * 0.1
bonus += (2e5 1e5) * 0.075
bonus += (4e5 2e5) * 0.05
bonus += (6e5 4e5) * 0.03
bonus += (profit 6e5) * 0.015
else:
bonus += 1e5 * 0.1
bonus += (2e5 1e5) * 0.075
bonus += (4e5 2e5) * 0.05
bonus += (6e5 4e5) * 0.03
bonus += (1e6 6e5) * 0.015
bonus += (profit 1e6) * 0.01
return bonus / 1e4 # 奖金单位转换为万元
# 获取用户输入
try:
profit = float(input("请输入当月利润(单位:万元):"))
if profit < 0:
print("利润不能为负数!")
else:
total_bonus = calculate_bonus(profit)
print(f"应发放的奖金总数为:{total_bonus:.5f}万元")
except ValueError:
print("请输入有效的数字!")
运行结果
从键盘上输入字符串“8”。
请输入当月利润(单位:万元):8
请输入当月利润(单位:万元):8
应发放的奖金总数为:0.80000万元
进程已结束,退出代码为 0
从键盘上输入字符串“15”。
请输入当月利润(单位:万元):15
应发放的奖金总数为:1.37500万元
进程已结束,退出代码为 0
从键盘上输入字符串“30”。
请输入当月利润(单位:万元):30
应发放的奖金总数为:2.25000万元
进程已结束,退出代码为 0
代码说明
1e5:是一个数值表示法,用于表示十的五次方,即100,000。
try:
……
except ValueError:
……:异常处理,当try块中的代码执行出错(例如,用户输入了非数字的字符),程序会跳转到except块并执行这里的代码,即打印出"请输入有效的数字!"的提示信息。
try:块用于捕获可能发生的异常。在这里,它用于捕获用户输入的异常情况。
except ValueError:用于处理用户输入无效数字的情况。