In [1]:
import sympy as sym
import numpy as np
import math

from IPython.display import display, Math
from sympy.abc import w,x,y,z,a,b,c,d
sym.init_printing()
In [2]:
p = x**2 + 4*x + 3
p
Out[2]:
$$x^{2} + 4 x + 3$$
In [3]:
sym.factor(p)
Out[3]:
$$\left(x + 1\right) \left(x + 3\right)$$
In [4]:
expr = 2*x**3*y - 2*x**2 + 2*x**2*y + 6*x**2 - 6*x*y + 6*x
expr
Out[4]:
$$2 x^{3} y + 2 x^{2} y + 4 x^{2} - 6 x y + 6 x$$
In [5]:
sym.factor(expr)
Out[5]:
$$2 x \left(x^{2} y + x y + 2 x - 3 y + 3\right)$$
In [6]:
name = 'Mike'

name.find('i')
Out[6]:
$$1$$
In [7]:
name.find('q')
Out[7]:
$$-1$$
In [8]:
exprs = [x**2+4*x+3, 2*y**2-1, 3*y**2+12*y]

for ei in exprs:
    strfact = str(sym.factor(ei))
    #print(strfact)
    
    if strfact.find('(')!=-1:
        display(Math('%s \\quad \\Rightarrow \\quad %s' %(sym.latex(ei),sym.latex(sym.factor(ei)))))
    else:
        display(Math('%s \\quad \\Rightarrow \\quad \\text{not factorable}' %(sym.latex(ei))))
$\displaystyle x^{2} + 4 x + 3 \quad \Rightarrow \quad \left(x + 1\right) \left(x + 3\right)$
$\displaystyle 2 y^{2} - 1 \quad \Rightarrow \quad \text{not factorable}$
$\displaystyle 3 y^{2} + 12 y \quad \Rightarrow \quad 3 y \left(y + 4\right)$