python 3 prefix to infix without too many parethesis
Terry Reedy
tjreedy at udel.edu
Mon Dec 9 14:40:42 EST 2019
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
More information about the Python-list
mailing list