Python-如何计算列表中的列表,并在列表之间进行运算

时间:2018-09-27 20:41:42

标签: python

我一直在尝试使用递归来解决这个“等式”(不使用正则表达式),但是由于某种原因,它会在par(string)完成其第一个循环之后继续将def action(calc)重置为从第一个par函数开始之前的位置(i)继续(在calc循环后,i局部变量重置为40)。

我的代码打印出来

1
1
1

如果我愿意

print par(equation)

它打印出

1

没有真正的理由要在函数内打印,但是我想知道你们是否可以在我的帮助下使用im python 2.7

这是我的代码:

equation = "[[[3+4] + [5*6]] + [5/7] / [[3+2] + [4/2]] * [2-1]]"
equation = equation.replace(" ", "")

def action(calc):
  x = int(calc[0])
  y = int(calc[2])
  if calc[1] == "+":
      result = x+y       
  elif calc[1] == "-":
      result = x-y      
  elif calc[1] == "*":
      result = x*y       
  else:
      result = x/y  
  return result

def par(string):
  for i in range(len(string)-1, 0, -1):
    if string[i] == "]":
      result =  par(string[:i])
    elif string[i] != "[":
        calc = string[i-2:i+1]
        result = action(calc)
        return result
    else:
        return result


par(equation)

0 个答案:

没有答案