zoukankan      html  css  js  c++  java
  • python百炼成钢实例002-个税计算-重点阶梯提取和enumerate函数--直接看方法3

    实例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))
  • 相关阅读:
    设计模式---工厂模式和抽象工厂模式
    设计模式---简单工厂模式
    设计模式---设计模式的分类及六大原则
    分布式---Raft算法
    分布式---Paxos算法
    分布式---CAP和BASE理论
    分布式---分布式事务
    分布式---分布式锁
    css
    react生命周期
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/15513587.html
Copyright © 2011-2022 走看看