我是初学者,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)
答案 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)