Это должно работать, но выражение должно быть заключено в круглые скобки, например: ((4-6) + (7/9) +3) должно быть (((4-6) + (7/9)) + 3 )
def evalu(express):
operat,numbers=[],[]
for i in express:
if i =='(':
pass
elif i in '0123456789':
numbers.append(int(i))
elif i in "+*-/":
operat.append(i)
elif i==")" :
oper=operat.pop()
if oper =='+':numbers.append(numbers.pop()+numbers.pop())
elif oper =='*':numbers.append(numbers.pop()*numbers.pop())
elif oper =='/':numbers.append(numbers.pop(-2)/numbers.pop())
elif oper =='-':numbers.append(numbers.pop(-2)-numbers.pop())
return numbers.pop()