我正在制作一个可以计算二次方程分辨率的程序。当判别式d
是非负的,但不适用于复杂的根时,这种方法有效。
如何插入虚构的平方根?
import math
a = input("insert the value of a: ")
b = input("insert the value of b: ")
c = input("insert the value of c: ")
def d(a,b,c) : return (b**2)-(4.*a*c)
def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt ( d ))/2.*a
def x2(d,a,b,c) : return (b-(2.*b))-(math.sqrt ( d ))/2.*a
print ("the values of D,X' e X'' respectively: ")
print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c))
此外,当我使用a=4 b=4 c=1
而d
将成为0
时,我收到以下错误。我不确定这里有什么问题。
Traceback (most recent call last):
File "H:/Python27/equation2.py", line 9, in <module>
print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c))
File "H:/Python27/equation2.py", line 6, in x1
def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt ( d ))/2.*a
TypeError: a float is required
答案 0 :(得分:4)
您正在尝试使用函数的sqrt。函数名称不会自动表示最近一次调用的结果。尝试一个临时变量:
d_result = d(a,b,c)
print (d_result, x1(d_result,a,b,c), x2(d_result,a,b,c))
这只修复了致命错误;眼前的问题仍然是你不能处理复杂的根源。 注意:对于您的给定案例a = b = c = 4,判别式为-48,不 0,作为您的过帐状态。
在这里,您有两门课程: