osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

python 3 prefix to infix without too many parethesis


On 12/9/2019 6:21 AM, jezkator at gmail.com wrote:
> Hi, I have got a problem.

Is this homework?

> I wrote a code for prefix to infix. It works, but I need improve it
> so on input there will be only necessary parentheses.

Define 'necessary'; give multiple input/output examples.
Put them in a test function.

> Here is the code:
> 
> import re
> a = input()
> 
> class Calculator:
> 
>      def __init__ (self):
>          self.stack = []
> 
>      def push (self, p):
>          if p in ['+', '-', '*', '/', "**"]:
>              op1 = self.stack.pop ()
>              op2 = self.stack.pop ()
>              self.stack.append ('(%s%s%s)' % (op1, p, op2))
> 
>              
>              print("op1 =", op1)
>              print("op2 =", op2)
>              print("p=", p)
>              print(self.stack)
> 
>          else:
>              self.stack.append (p)
> 
> 
>      def convert (self, l):
>          l.reverse ()
>          for e in l:
>              self.push (e)
>          return self.stack.pop ()
> 
> c = Calculator ()
> 
> print (c.convert (re.findall(r'\d+|\*\*|[-+*/]', a)))
> 
> 
> input is like /-*+*++**85 27 39 87 65 65 37 63 91

Since '*' and '**' are both allowed operators (see 'p in' above), spaces 
are needed between operators to disambiguate.  In any case, what output 
does your code produce now, and what do you want it to produce.

-- 
Terry Jan Reedy