二次方程式因子形式

时间:2015-08-11 06:53:37

标签: python-2.7

我是初学者,python是我的第一语言,试图考虑因素 等式,其中等式提供结果 因素形式,例如:

x^2+5x+4

输出为(或括号中的任何因子)

(x+4)(x+1)

到目前为止,这只给了我x但不是正确的值

CODE

def quadratic(a,b,c):
    x = -b+(((b**2)-(4*a*c))**(1/2))/(2*a)
    return x

print quadratic(1,5,4)

2 个答案:

答案 0 :(得分:1)

这将对您有所帮助:

from __future__ import division
def quadratic(a,b,c):
    x = (-b+((b**2)-(4*a*c))**(1/2))/(2*a)
    y = (-b-((b**2)-(4*a*c))**(1/2))/(2*a)
    return x,y

m,n = quadratic(1,5,4)
sign_of_m = '-' if m > 0 else '+'
sign_of_n = '-' if n > 0 else '+'
print '(x'+sign_of_m+str(abs(m))+')(x'+sign_of_n+str(abs(n))+')'

输出

(x+1.0)(x+4.0)

如果有帮助,请告诉我。

答案 1 :(得分:1)

您的括号位于错误的位置,您只计算并返回一个根,并且(最重要的是),您使用**(1/2)来计算平方根。在Python 2中,这将评估为0(整数运算)。要获得0.5,请使用(1./2)(或直接0.5)。 这(稍微)更好:

def quadratic(a,b,c):
    x1 = (-b+(b**2 - 4*a*c)**(1./2))/(2*a)
    x2 = (-b-(b**2 - 4*a*c)**(1./2))/(2*a)
    return x1, x2

print quadratic(1,5,4)

并返回(-1.0, -4.0)。 要获得括号,请将根的负数放在适当的字符串中:

def quadratic(a,b,c):
    x1 = (-b+(b**2 - 4*a*c)**(1./2))/(2*a)
    x2 = (-b-(b**2 - 4*a*c)**(1./2))/(2*a)
    return '(x{:+f})(x{:+f})'.format(-x1,-x2)

print quadratic(1,5,4)

返回:

(x+1.000000)(x+4.000000)