求方程的实数解(含异常处理)

题目:

求方程一元二次ax^2+bx+c=0的实数根。 要求:写程序计算方程的根。
对a=0和b^2-4ac<0进行异常处理。

输入格式:

一行输入三个数

输出格式:

保留一位小数,从小到大输出。

输入样例1:

在这里给出一组输入。例如:

1 6 5

输出样例1:

在这里给出相应的输出。例如:

-5.0 -1.0

输入样例2:

1 4 5

输出样例2:

No values

输入样例3:

0 4 5

输出样例3:

a不能取0

代码展示: 

import math  

def calculate_roots(a, b, c):  
    if a == 0:  
        raise ValueError("a不能取0") #e
    
    delta = b ** 2 - 4 * a * c 
        # 根据判别式的值处理根的情况  
    if delta > 0:  
        # 两个不同的实数根  
        root1 = (-b - math.sqrt(delta)) / (2 * a)  
        root2 = (-b + math.sqrt(delta)) / (2 * a)  
        return root1, root2  
    elif delta == 0:  
        # 两个相同的实数根  
        root = -b / (2 * a)  
        return root, root  
    else:  
        # 没有实数根  
        raise ValueError("No values") #e
  
def main():  
    try:  
        a, b, c = map(int, input().split())  
        try:  
            root1, root2 = calculate_roots(a, b, c)  
            print(f"{root1:.1f} {root2:.1f}")  
        except ValueError as e:  
            print(e)
    except ValueError:  # 输入非数字时的异常处理  
        print("No values")  
  
if __name__ == "__main__":  
    main()
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值