从键盘输入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)
我可以给出一个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