Python查找前缀的最大值

时间:2018-11-13 05:03:24

标签: python dictionary

我碰巧看到过此编码分配。 这个想法是编写一个函数,该函数将对作为dict传递的值执行前缀操作。前缀操作基于用户提供的表达式。 例如。 +1 2作为表达式将产生3*+125应该产生15,并且该函数收到以下两个参数

expression = +*1xy
variables = {'x':(3,7),'y':(2,3)}#3 and 7 are lower an upper bound

然后函数应返回8 ((x*1)+y; max x ==6 and y==2)。 我的处理方法如下:

def max_result(expression,variables):
    exp = expression.split(" ")
    var_max = variables[max(variables,variables.get())]
    stack = []
    total = None
    try:
    for i in exp:
       if i.isdigit():
          i=int(i)
          if total is None:
               total = i
          else:
               total = calc(stack.pop(0),total,i)
       else:
          stack.insert(0,i)
          total = calc(stack.pop(0),var_max[0],var_max[1])# This is not correct
    except:
        return None

然后我定义了calc函数,如下所示

def calc(op,op1,op2):
    if op == "*":
       return op1 * op2
    elif op == "/":
       return op1 / op2
    elif op == "+":
       return op1 + op2
   else:
       return op1 - op2

variableslen(expression)不超过2并且运算符和数字位数相同时,上述代码可以很好地工作。 如上所述,当variables作为dict传递时,上述代码将失败。
谁能对此发表一些看法?

0 个答案:

没有答案