从键盘输入a,b,c的值,在实数范围内求解一元二次方程ax2+bx+c=0。

从键盘输入a,b,c的值,在实数范围内求解一元二次方程ax2+bx+c=0。要求用try-except语句处理二次项a的值不是数字或者等于0异常的情况。

import math

try:
    # 输入a、b、c的值
    a = float(input("请输入a的值:"))
    b = float(input("请输入b的值:"))
    c = float(input("请输入c的值:"))

    # 判断a是否为0
    if a == 0:
        raise ValueError("a的值不能为0")

    # 计算判别式
    discriminant = b**2 - 4*a*c

    # 判断判别式的值
    if discriminant > 0:
        # 有两个实数解
        x1 = (-b + math.sqrt(discriminant)) / (2*a)
        x2 = (-b - math.sqrt(discriminant)) / (2*a)
        print("方程的解为:x1 = {}, x2 = {}".format(x1, x2))
    elif discriminant == 0:
        # 有一个实数解
        x = -b / (2*a)
        print("方程的解为:x = {}".format(x))
    else:
        # 没有实数解
        print("方程没有实数解")
except ValueError as ve:
    print(ve)
except Exception as e:
    print("发生了异常:", e)

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7575361
  • 这篇博客你也可以参考下:题目29:输入a、b、c求一元二次方程ax2+bx+c=0的两个实数根(a不等于0,不考虑无解的情况)。
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以给出一个Python程序和输入的样例,用于求解一元二次方程。需要处理输入的a值不是数字或a等于0的异常情况。

    import math
    
    while True:
        try:
            a = float(input("请输入a (a ≠ 0): "))
            if a == 0:
                raise ValueError
            b = float(input("请输入b: "))
            c = float(input("请输入c: "))
            break
        except ValueError:
            print("输入的a必须为数字且不能等于0,请重新输入。")
    
    delta = b * b - 4 * a * c
    if delta < 0:
        print("无实数解。")
    else:
        x1 = (-b + math.sqrt(delta)) / (2 * a)
        x2 = (-b - math.sqrt(delta)) / (2 * a)
        print(f"两根实数解为 x1 = {x1},x2 = {x2}")
    

    输入样例:

    请输入a (a ≠ 0): 2
    请输入b: -5
    请输入c: 1
    

    运行结果:

    两根实数解为 x1 = 2.0,x2 = 0.5