本文使用Python实现一元二次方程求根公式,主要演示运算符和几个内置函数的用法,封面图片与本文内容无关。
def root(a, b, c, highmiddle=True): #首先保证接收的参数a,b,c都是数字,并且a不等于0 #由于计算机表示实数时存在精度的问题,所以不能使用==来判断实数是否为0 #函数的最后一个参数highmiddle为True表示高中,False表示初中 if not isinstance(a, (int, float, complex)) or abs(a)<1e-6: print('error') return if not isinstance(b, (int, float, complex)): print('error') return if not isinstance(c, (int, float, complex)): print('error') return
#delta<0时无解 d = b**2 - 4*a*c #根据一元二次方程求根公式进行计算 #当d<0时,在实数域内无解,d**0.5会得到复数 x1 = (-b + d**0.5) / (2*a) x2 = (-b - d**0.5) / (2*a)
if isinstance(x1, complex): if highmiddle: #高中阶段需要考虑复数根,实部和虚部都保留3位小数 x1 = round(x1.real, 3) + round(x1.imag, 3)*1j x2 = round(x2.real, 3) + round(x2.imag, 3)*1j return (x1, x2) else: #初中阶段只考虑实数根 print('no answer') return #如果是实数根,保留3位小数 return (round(x1,3), round(x2,3))
r = root(1, 2, 4) if isinstance(r, tuple): print('x1={0[0]}\nx2={0[1]}'.format(r))