题目-002:企业发放的奖金根据利润提成。
利润(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,求应发放奖金总数?
- 分析:分段计算,阶梯式
- Python版本:Python 3.6.5
代码1:基础代码,分段计算,比较繁琐,但容易想到
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def count():
i = int(input("please input profit:"))
p = 0
if i < 100000:
p = i*0.1
elif i < 200000:
p = (i-100000)*0.075 + 100000*0.1
elif i < 400000:
p = (i-200000)*0.05 + 100000*0.075 + 100000*0.1
elif i < 600000:
p = (i-400000)*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
elif i < 1000000:
p = (i-600000)*0.015 + 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
else:
p = (i-1000000)*0.01 + 400000*0.015 + 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1
print(p)
while True:
count()
please input profit:110000
10750.0
please input profit:650000
34250.0
please input profit:11111111
140611.11
代码2:参考其他人的一种写法,利用数轴来分界,定位。注意定义时需把奖金定义成长整型
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def count():
arr = [1000000,600000,400000,200000,100000,0]
r = [0.01,0.015,0.03,0.05,0.075,0.1]
p = 0
i = int(input("please input profit:"))
for v in range(0,6):
if i > arr[v]:
p+=(i-arr[v])*r[v]
i = arr[v]
print(p)
while True:
count()
please input profit:110000
10750.0
please input profit:650000
34250.0
please input profit:11111111
140611.11