我正在编写代码,一开始我需要建立类的属性,但是这些属性取决于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
答案 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