Documente Academic
Documente Profesional
Documente Cultură
class Node:
def __init__(self, d):
self.left = None
self.right = None
self.data = d
def toString(self):
if (self.left and self.right):
left = self.left.toString()
right = self.right.toString()
opr = self.data
return "(" + left + " " + opr + " " + right + ")"
else:
return self.data
def prettyprint(self):
s = self.expr.toString()
updatedstring= s.replace(" + 0.0","")
print(updatedstring)
def constant(self):
if self.expr.data[0].isdigit():
return True
else:
return False
def variable(self):
if self.expr.data[0].isalpha():
return True
else:
return False
def sum(self):
if (self.expr.data == '+'):
return True
else:
return False
def addend(self):
left = self.expr.left
return expr("", left)
def augend(self):
right = self.expr.right
return expr("", right)
# Original
# e.left = e1
# e.right = e2
# Modified
e.left = e1.expr
e.right = e2.expr
return expr("", e)
def product(self):
if (self.expr.data == '*'):
return True
else:
return False
# Original
# e.left = e1
# e.right = e2
# Modified
e.left = e1.expr
e.right = e2.expr
return expr("", e)
def div(self):
if (self.expr.data == '/'):
return True
else:
return False
def makediv(self, e1, e2):
e = self.Node("/")
# Original
# e.left = e1
# e.right = e2
# Modified
e.left = e1.expr
e.right = e2.expr
return expr("", e)
def exponential(self):
if (self.expr.data == '^'):
return True
else:
return False
# Original
# e.left = e1
# e.right = e2
# Modified
e.left = e1.expr
e.right = e2.expr
return expr("", e)
# Original
# e.left = e1
# e.right = e2
# Modified
e.left = e1.expr
e.right = e2.expr
return expr("", e)
a = input("Enter an expression:")
e = expr(a)
e.prettyprint()
f = e.deriv('x')
f.prettyprint()