给定条件和值的动态if语句

问题描述 投票:0回答:1

我想在python中有一个动态的if-else。这是一个简单的示例:

def static_if(x):
   if x < 5:
      return 10
   elif x< 10:
      return 20
   elif x<20:
       return 18
   else:
       return -1

返回值和范围不断变化。即使我使用的if-else的数量也可能会改变。我想要一个可以动态捕获此输出的函数。例如,给定[10,20,18,-1]的输出数组和[5,10,20]的条件,就会创建上述函数。输出和条件的长度可能会改变,但是输出的长度总是比条件小1。

python if-statement
1个回答
2
投票

您可以创建一个接收条件和输出数组的函数,然后使用它们来创建一个新函数,该函数执行您的static_if的作用:

def dynamic_if(output, cond):
    def func(x):
        for i, val in enumerate(cond):
            if x < val:
                return output[i]
        return output[-1]

    return func
static_if = dynamic_if([10,20,18,-1], [5,10,20])

static_if(4) # will output 10
static_if(21) # will output -1

0
投票

您可以循环执行此操作,将条件和输出保留在两个列表中。

示例:

def dynamic_if(number, inputs, outputs):
  for inp in range(len(inputs)):
    if number < inputs[inp]:
      return outputs[inp]
  return -1


inputs = [5,10,20]
outputs =[10,20,18,-1]

print(dynamic_if(8,inputs,outputs))
print(dynamic_if(12,inputs,outputs))

输出:

20
18
© www.soinside.com 2019 - 2024. All rights reserved.