我无法解决这个问题。我的目标是创建一个包含以下内容的类:
方法getX()和getY()返回等式的解。
class LinearEquation:
def __init__(self, a, b, c, d, e, f)
self.__a = a
self.__b = b
self.__c = c
self.__d = d
self.__e = e
self.__f = f
def getA(self):
return self.__a
def getB(self):
return self.__b
def getC(self):
return self.__c
def getD(self):
return self.__d
def getE(self):
return self.__e
def getF(self):
return self.__f
def isSolvable(self):
if (a*d-b*c)!=0:
return True
def getX(self):
x = (e*d-b*f)/ (a*d-b*c)
return x
def getY(self):
y = (a*f-e*c) / (a*d-b*c)
return y
这是我的测试方程式,但我对他们的工作没有好运。
from LinearEquation import LinearEquation
def main():
a, b, c, d, e, f =eval(input("Enter a, b, c, d, e, f: "))
denominator=(a*d-b*c)
if denominator==0:
print("The equation has no solution")
else:
print("X is",getX(),"and y is",getY())
main()
答案 0 :(得分:0)
您应该与您的成员变量名称保持一致:如果您将其初始化为self.__a
,则必须始终将其称为self.__a
。
在函数中进行测试时,所有分支都应返回一个值。在进行除法之前,您应该确保分母不为空。
如果你在程序中多次使用相同的表达式,那么不要重复自己的规则说你应该计算一次。
通过这些修复,代码变为:
class solver:
def __init__(self, a, b, c, d, e, f):
self.__a = a
self.__b = b
self.__c = c
self.__d = d
self.__e = e
self.__f = f
self.__det = self.__a*self.__d-self.__b*self.__c
def getA(self):
return self.__a
def getB(self):
return self.__b
def getC(self):
return self.__c
def getD(self):
return self.__d
def getE(self):
return self.__e
def getF(self):
return self.__f
def isSolvable(self):
return self.__det != 0
def getX(self):
if not self.isSolvable(): return None
x = (self.__e*self.__d-self.__b*self.__f)/ self.__det
return x
def getY(self):
if not self.isSolvable(): return None
y = (self.__a*self.__f-self.__e*self.__c) / self.__det
return y
答案 1 :(得分:0)
这是一个有效的解决方案。如果不能解决x和y返回null
printf
应该提一下,如果没有将行列式转换为浮动,则可能会出现非整数解的舍入错误