实例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,求应发放奖金总数?
方法1:直接实现
# 方法1:文字直接实现 interest = int(input("请输入当月利润(单位:万元):")) reward = 0 if (0 < interest <=10): reward = interest*0.1 elif 10 < interest < 20: reward = 10*0.1+(interest-10)*0.075 elif 20 <= interest < 40: reward = 10*0.1+(20-10)*0.075+(interest-20)*0.05 elif 40<= interest < 60: reward = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (interest-40)*0.03 elif 60 <= interest < 100: reward = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (interest-60)*0.015 elif interest >= 100: reward = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (100-60)*0.015 + (interest-100)*0.01 else: print("输入有问题") print("当月利润{},应发放奖金总数{}".format(interest,reward))
方法2:阶梯实现
# 方法2:提取利润阶梯 interest = int(input("请输入当月利润(单位:万元):")) # 当月利润 reward = 0 # 奖金额度 range_interest = [10,10,20,20,40] #10万之前提成对应0.1,扣除这10万,到20万之间的10万的提成为0.075 range_rate = [0.1,0.075,0.05,0.03,0.015,0.01] for i in range(len(range_interest)): if interest < range_interest[i]: reward = range_rate[i]*interest +reward break else: interest=interest-range_interest[i] # 大于10万,则减去之前的区间,剩下的再和区间比对 reward = range_rate[i]*range_interest[i] # 这个区间对应的奖金 print("当月利润{},应发放奖金总数{}".format(interest,reward))
方法3:阶梯实现优化-引用函数enumerate,注意输入为浮点数时格式化
# 方法3:优化,学习函数-enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 # 注意小数的输入,不能用整形转化 interest = float(input("请输入当月利润(单位:万元):")) # 当月利润 reward = 0 # 奖金额度 range_interest = [10,10,20,20,40] #10万之前提成对应0.1,扣除这10万,到20万之间的10万的提成为0.075 range_rate = [0.1,0.075,0.05,0.03,0.015,0.01] for i, range_interest_value in enumerate(range_interest): if interest < range_interest_value: reward = range_rate[i]*interest +reward break else: interest=interest-range_interest_value # 大于10万,则减去之前的区间,剩下的再和区间比对 reward = range_rate[i]*range_interest_value # 这个区间对应的奖金 print("当月利润{},应发放奖金总数{:.2}".format(interest,reward))