Python编程:计算一元二次方程
题目:
为一元二次方程ax^2+bx+c=0设计一个类名为Equation的类,这个类包括:
- 代表3个系数的成员变量a, b, c;
- 一个名为getDiscriminant()的方法返回判别式的值;
- 一个名为getRoot1和getRoot2的方法返回等式的两个根,如果判别式为负,这些方法返回0。
代码:
import math
#定义一个方程类
class Equation() :
a, b, c = 0, 0, 0 #分别给成员变量a,b,c赋初值
def _init_(self, a, b, c) : #传值
self.a = a
self.b = b
self.c = c
def getDiscriminant(self) : #返回判别式的值,小于零无解,输出无解,返回False
if self.b**2-4*self.a*self.c < 0 :
print("此方程式没有根")
return False
else :
return True
def getRoot1(self) : #计算第一个根,如果判别式大于等于零,计算第一个根,否则,返回0
if self.getDiscriminant() == True :
return (-self.b - math.sqrt( (self.b**2) - 4*self.a*self.c)) / (2*self.a)
else :
return 0
def getRoot2(self) : #计算第二个根,如果判别式大于等于零,计算第二个根,否则,返回0
if self.getDiscriminant() == True :
return (-self.b + math.sqrt( (self.b**2) - 4*self.a*self.c)) / (2*self.a)
else :
return 0
Equation_object = Equation() #实例化一个方程类对象
Equation_object._init_(a = 1, b = -7, c = 12) #输入成员变量a,b,c的值
print("x1 = {}\nx2 = {}".format(Equation_object.getRoot1(), Equation_object.getRoot2())) #输出计算结果