Python 类型错误:';int';对象不可调用:二次
(在二次方程中查找x的值,不需要导入。)每当我运行程序时,Python都会在Python 类型错误:';int';对象不可调用:二次,python,error-handling,python-2.7,quadratic,Python,Error Handling,Python 2.7,Quadratic,(在二次方程中查找x的值,不需要导入。)每当我运行程序时,Python都会在discriminant=(b**2)-4(a*c)处停止,并显示TypeError:“int”对象不可调用。怎么了 #------SquareRootDefinition---------# def Square_Root(n, x): if n > 0: y = (x + n/x) / 2 while x != y: x = y return Square_Roo
discriminant=(b**2)-4(a*c)
处停止,并显示TypeError:“int”对象不可调用。怎么了
#------SquareRootDefinition---------#
def Square_Root(n, x):
if n > 0:
y = (x + n/x) / 2
while x != y:
x = y
return Square_Root(n, x)
else:
if abs(10 ** -7) > abs(n - x ** 2):
return y
elif n == 0:
return 0
else:
return str(int(-n)) + "i"
#----------Quadratic Equation--------------#
a = input("Enter coefficient a: ")
while a == 0:
print "a must not be equal to 0."
a = input("Enter coefficient a: ")
b = input("Enter coefficient b: ")
c = input("Enter coefficient c: ")
def Quadratic(a, b, c):
discriminant = (b ** 2) - 4(a * c)
if discriminant < 0:
print "imaginary"
elif discriminant >= 0:
Sqrt_Disc = Square_Root(discriminant)
First_Root = (-b + Sqrt_Disc) / (2 * a)
Second_Root = (-b - Sqrt_Disc) / (2 * a)
return First_Root, Second_Root
X_1, X_2 = Quadratic(a, b, c)
#----SquareRootDefinition---------#
def平方根(n,x):
如果n>0:
y=(x+n/x)/2
而x!=y:
x=y
返回平方根(n,x)
其他:
如果abs(10**-7)>abs(n-x**2):
返回y
elif n==0:
返回0
其他:
返回str(int(-n))+“i”
#----------二次方程--------------#
a=输入(“输入系数a:”)
当a==0时:
打印“a不得等于0。”
a=输入(“输入系数a:”)
b=输入(“输入系数b:”)
c=输入(“输入系数c:”)
def二次型(a、b、c):
判别式=(b**2)-4(a*c)
如果判别式<0:
打印“想象的”
elif判别式>=0:
Sqrt\u Disc=平方根(判别式)
第一根=(-b+Sqrt\u Disc)/(2*a)
二次方根=(-b-Sqrt_Disc)/(2*a)
返回第一个\u根,第二个\u根
X_1,X_2=二次(a,b,c)
4(a*c)
不是有效的Python。你的意思是4*a*c
。您可以在数学记数法中使用并置并省略乘法符号,但在Python(或大多数其他编程语言)中则不行。您需要执行4*(a*c)
或只是4*a*c
,因为python认为您试图调用函数4
您试图将4
用作函数:
discriminant = (b ** 2) - 4(a * c)
您错过了*
:
discriminant = (b ** 2) - 4 * (a * c)
此外,如果您的鉴别力低于0,您将得到一个未绑定的本地异常:
>>> X_1, X_2 = Quadratic(2, 1, 1)
imaginary
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 9, in Quadratic
UnboundLocalError: local variable 'First_Root' referenced before assignment
def Quadratic(a, b, c):
discriminant = (b ** 2) - 4(a * c)
if discriminant < 0:
raise ValueError("imaginary")
elif discriminant >= 0:
Sqrt_Disc = Square_Root(discriminant)
First_Root = (-b + Sqrt_Disc) / (2 * a)
Second_Root = (-b - Sqrt_Disc) / (2 * a)
return First_Root, Second_Root
您的平方根()
函数缺少x
的默认值:
def Square_Root(n, x=1):
通过这些更改,您的函数实际上可以工作:
>>> Quadratic(1, 3, -4)
(1, -4)
顺便说一句,代码还没有完成。谢谢@BrenBarn。你是说唯一的问题是操作?@user1947570:唯一的问题是你编写操作的方式。您必须实际编写乘法符号(
*
)。想象一下,如果您编写了a(b*c)
。是功能吗?或者a
是你想要乘的东西?由于这种模糊性,乘法不能是隐式的。帮助:既然平方根函数需要两个参数,我应该在Sqrt\u Disc=Square\u Root(判别式)
中添加什么才能使二次函数工作?@user1947570:你的意思是你不知道如何使用递归函数Square\u Root()
?尖沙咀。谢谢你,Martjin Pieters。