有没有办法减少if陈述?蟒蛇

时间:2020-06-25 19:08:11

标签: python-3.x

我正在编写代码,一开始我需要建立类的属性,但是这些属性取决于sueldo的值,因此我编写了一些if语句来做到这一点。有什么办法可以减少它们?

class sueldobruto:

    def __init__(self, sueldo):
        self.sueldo = sueldo
        if 0.01 <= self.sueldo <= 19.03:
            self.limiteinferior = 0.01
            self.limitesuperior = 19.03
            self.cuotafija = 0
            self.porcentaje = 0.0192
        elif 19.04 <= self.sueldo <= 161.52:
            self.limiteinferior = 19.04
            self.limitesuperior = 161.52
            self.cuotafija = 0.37
            self.porcentaje = 0.064
        elif 161.53 <= self.sueldo <= 283.86:
            self.limiteinferior = 161.53
            self.limitesuperior = 283.86
            self.cuotafija = 9.48
            self.porcentaje = 0.1088
        elif 283.87 <= self.sueldo <= 329.97:
            self.limiteinferior = 283.87
            self.limitesuperior = 329.97
            self.cuotafija = 22.79
            self.porcentaje = 0.16
        elif 329.98 <= self.sueldo <= 395.06:
            self.limiteinferior = 329.98
            self.limitesuperior = 395.06
            self.cuotafija = 30.17
            self.porcentaje = 0.1792
        elif 395.07 <= self.sueldo <= 796.79:
            self.limiteinferior = 395.07
            self.limitesuperior = 796.79
            self.cuotafija = 41.84
            self.porcentaje = 0.2136
        elif 796.8 <= self.sueldo <= 1255.85:
            self.limiteinferior = 796.8
            self.limitesuperior = 1255.85
            self.cuotafija = 127.65
            self.porcentaje = 0.2352

2 个答案:

答案 0 :(得分:1)

这是减少if数量的一种方法:

sample_array = {
    "0.01-19.03" : [{
              "limiteinferior" : 0.01,
              "limitesuperior" : 19.03,
              "cuotafija" : 0,
              "porcentaje" : 0.0192
            }
        ],
    
    "19.03-161.52" : [{
              "limiteinferior" : 19.03,
              "limitesuperior" : 161.52,
              "cuotafija" : 0.37,
              "porcentaje" : 0.064
            }
        ],
    "161.52-283.86" : [{
              "limiteinferior" : 161.52,
              "limitesuperior" : 283.86,
              "cuotafija" : 9.48,
              "porcentaje" : 0.1088
            }
        ]
}

finder = 18
limiteinferior = 0
limitesuperior = 0
cuotafija = 0
porcentaje = 0

for key, value in sample_array.items():
    split_range = key.split("-")
    #print(split_range)
    if float(split_range[0]) <=  finder and float(split_range[1]) >= finder:
        limiteinferior = sample_array.get(key)[0].get("limiteinferior")
        limitesuperior = sample_array.get(key)[0].get("limitesuperior")
        cuotafija = sample_array.get(key)[0].get("cuotafija")
        porcentaje = sample_array.get(key)[0].get("porcentaje")
        
print(limiteinferior)
print(limitesuperior)

print(cuotafija)
print(porcentaje)

这是我尝试过的方法之一。

答案 1 :(得分:1)

我用它来减少if语句的复杂性。 我刚刚分配了 limiteinferior limitesuperior ,没有分配 cuotafija porcentaje ,因为id不知道如何实现值,如果您知道就可以在forloop中编辑代码

class sueldobruto:
    def __init__(self, sueldo):
        self.sueldo = sueldo
        list = [0.01, 19.03,161.52,283.86,329.97, 395.06, 796.79, 1255.85]

        if self.sueldo < 0.01:
            pass
        for x in list[1:]:
            if self.sueldo <= x:
                self.limiteinferior = list[list.index(x) - 1] + 0.01
                self.limitesuperior = x