【程序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,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
取名字:当月利润 Monthly profit m_pro 奖金 bonus
我把它修改了下,想显示出奖金明细,每一档怎么算的,新手搞半天,呵呵呵,标记一下
最初代码
bonus1 = 100000 * 0.1
bonus2 = bonus1 + 100000 * 0.075
bonus4 = bonus2 + 200000 * 0.05
bonus6 = bonus4 + 200000 * 0.03
bonus10 = bonus6 + 400000 * 0.015
m_pro = int(input("请输入当月利润总金额:\n"))
i = m_pro
if i <= 100000:
bonus = i * 0.1
print('低于或等于10万元时,奖金可提10%%。\n本部分您的奖金为:%d*0.1=' % i, i*0.1)
elif i <= 200000:
bonus = bonus1 + (i - 100000) * 0.075
print('低于或等于10万元时,奖金可提10%。\n本部分您的奖金为:100000*0.1=10000')
print('高于10万元的部分,可提成7.5%%。\n本部分您的奖金为:%d*0.075=' % (i-100000), (bonus-bonus1))
elif i <= 400000:
bonus = bonus2 + (i - 200000) * 0.05
print('低于或等于10万元时,奖金可提10%。\n本部分您的奖金为:100000*0.1=10000')
print('10万到20万元时,奖金可提7.5%。\n本部分您的奖金为:100000*0.075=7500')
print('高于20万低于40万元的部分,可提成5%%。\n本部分您的奖金为:%d*0.05=' % (i - 200000), (bonus - bonus2))
elif i <= 600000:
bonus = bonus4 + (i - 400000) * 0.03
print('低于或等于10万元时,奖金可提10%。\n本部分您的奖金为:100000*0.1=10000')
print('10万到20万元时,奖金可提7.5%。\n本部分您的奖金为:100000*0.075=7500')
print('20万到40万元时,奖金可提5%。\n本部分您的奖金为:200000*0.5=10000')
print('高于40万低于60万元的部分,可提成0.03%%。\n本部分您的奖金为:%d*0.03=' % (i - 400000), (bonus - bonus4))
elif i <= 1000000:
bonus = bonus6 + (i - 600000) * 0.015
print('低于或等于10万元时,奖金可提10%。\n本部分您的奖金为:100000*0.1=10000')
print('10万到20万元时,奖金可提7.5%。\n本部分您的奖金为:100000*0.075=7500')
print('20万到40万元时,奖金可提5%。\n本部分您的奖金为:200000*0.5=10000')
print('40万到60万元时,奖金可提3%。\n本部分您的奖金为:200000*0.3=6000')
print('高于60万低于100万元的部分,可提成1.5%%。\n本部分您的奖金为:%d*0.015=' % (i - 600000), (bonus - bonus6))
else:
bonus = bonus10 + (i - 1000000) * 0.01
print('低于或等于10万元时,奖金可提10%。\n本部分您的奖金为:100000*0.1=10000')
print('10万到20万元时,奖金可提7.5%。\n本部分您的奖金为:100000*0.075=7500')
print('20万到40万元时,奖金可提5%。\n本部分您的奖金为:200000*0.5=10000')
print('40万到60万元时,奖金可提3%。\n本部分您的奖金为:200000*0.3=6000')
print('60万到100万元时,奖金可提1.5%。\n本部分您的奖金为:400000*0.15=6000')
print('高于100万元的部分,可提成1%%。\n本部分您的奖金为:%d*0.01=' % (i - 1000000), (bonus - bonus10))
print('总奖金bonus = ', bonus)
后面修改代码:
m_pro_lever = [0, 100000, 200000, 400000, 600000, 1000000, 10000000000]
rate = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
m_pro = int(input("请输入当月利润总金额:\n"))
print('当月利润总金额为:%d' % m_pro)
bonus = 0
for i in range(0, 7):
if m_pro > m_pro_lever[5-i]:
lever_bonus = (m_pro - m_pro_lever[5-i])*rate[5-i]
bonus = bonus + (m_pro - m_pro_lever[5-i])*rate[5-i]
m_pro = m_pro_lever[5-i]
if 6-i == 6:
print('%d万元以上部分按%.3f计算奖励:%d元' %
(m_pro_lever[5 - i] / 10000, rate[5 - i], lever_bonus))
else:
print('%d万元%d万元之间部分按%.3f计算奖励:%d元' % (m_pro_lever[5 - i] / 10000, m_pro_lever[6 - i] / 10000,
rate[5 - i], lever_bonus))
print("总计奖金", bonus)
这里列表m_pro_lever[6]可以是空的,就是解决100万以上的显示问题才搞个m_pro_lever[6]来,要不然会报错,好像是超出范围了吧。
后面的自己感觉简洁多了,前面傻瓜式的,写的好长,后面就是要注意范围处理好。后面以后修改规则也好改写些哈。哈哈哈哈哈哈。