在解决实际问题之前,请注意以下几点:第一个B前面应该有一个负号
b^2不等于“b平方”;您需要b**2。在
sqrt中的等式应该是“B的平方减去4AC”;您写的是“B减去4AC”。同样,sqrt之外的B也不应该是平方的。在
二次公式有两个解,但你只显示了一个;你可以在“B平方”和平方根部分之间加上或减号。在
当二次公式告诉你取一个负数的平方根时,这意味着X没有实际值。虽然反转该值将防止错误发生,但您将得到一个无意义的结果。根据用户的数学专业知识水平,您应该显示一条错误消息,例如“不存在真正的解决方案”,或者直接打印复杂的解决方案。在from math import sqrt
a=int(input("a = "))
b=int(input("b = "))
c=int(input("c = "))
def qe(a,b,c):
"Solves the quadratic for x"
print(a,"x^2+",b,"x+",c,"=0",sep='')
try:
first_root = (-b-sqrt(b**2-(4*a*c)))/(2*a)
second_root = (-b+sqrt(b**2-(4*a*c)))/(2*a)
print("x =",first_root)
print("x =",second_root)
except ValueError:
print("No real solutions exist")
qe(a,b,c)
cmath模块允许您处理复数。特别是,它的^{}将作用于负数。在
^{pr2}$
结果:a = 1
b = 2
c = 3
1x^2+2x+3=0
No real solutions exist
或者a = 1
b = 2
c = 3
1x^2+2x+3=0
x = (-1-1.4142135623730951j)
x = (-1+1.4142135623730951j)
对于有实解的方程组,两种方法的结果都是相同的。(尽管使用cmath的格式不太好)a = 1
b = 1
c = 0
1x^2+1x+0=0
x = -1.0
x = 0.0