7-2 设计一元二次方程求解类(高教社,《Python编程基础及应用》习题9-4)——python

设计一个类Root来计算ax2+bx+c=0的根。该类包括:a、b、c共3个属性表示方程的3个系数,getDiscriminant()方法返回b2-4ac, getRoot1()和getRoot2()返回方程的两个根。

其中,getRoot1()返回的根对应:

x1.png


getRoot2()返回的根对应:

x2.png

类接口定义:

 

class Root: def __init__(self,a,b,c): ...

裁判测试程序样例:

 

a=float(input()) #请输入二次项系数 b=float(input()) #请输入一次项系数 c=float(input()) #请输入常数项系数 root=Root(a,b,c) if root.getDiscriminant()>0: print("{:.2f}".format(root.getRoot1())) print("{:.2f}".format(root.getRoot2())) elif root.getDiscriminant()==0: print("{:.2f}".format(root.getRoot1())) else: print("No Root!")

输入样例:

2.1
10.2
3.0

输出样例:

-0.31
-4.54
import math  
  
class Root:  
    def __init__(self, a, b, c):  
        self.a = a  
        self.b = b  
        self.c = c  
  
    def getDiscriminant(self):  
        return self.b ** 2 - 4 * self.a * self.c  
  
    def getRoot1(self):  
        if self.getDiscriminant() < 0:  
            return "No Root!"  
        else:  
            root1 = (-self.b + math.sqrt(self.getDiscriminant())) / (2 * self.a)  
            return root1  
  
    def getRoot2(self):  
        if self.getDiscriminant() < 0:  
            return "No Root!"  
        else:  
            root2 = (-self.b - math.sqrt(self.getDiscriminant())) / (2 * self.a)  
            return root2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值