用纯字符串格式来记录二次方程:
'3x^2-10x-8=0'
'x^2-2x+1=0'
'3x^2+14x+8=0'
'x^2=9'
二次方怎么表示呢?比如上面的^表示法,或者是python风格的**表示法,甚至是更简单的直接用x2表示x的二次方,都是可以的。对于我们求解来说,无论用哪种方法都没问题,在代码只需非常小的改动(后面将指出)。
所谓编程,就用抽象的方法来解决问题:上面这些二次方程,我们抽象为这样的格式:
ax^2+bx+c=d
注意,我们无须限定等号右边为0
如果你看了前面的《用python编程7行代码解数学方程(ax+b=c的形式)》就知道我们思路仍然是先取参数,然后用数学的方法来求解。
这里,我们会看到利用python函数返回多值的贴心功能来直接返回二次方程的两个解。
这就是完整的解方程代码:
如果你不是x^2来表示x的二次方,只需在第三行对应位置修改即可。
在代码的4,5,6,7行,都用了Python的三目表达式功能让代码更加简短清晰。特别注意第4行的三目表达式怎样同时给两个参数赋值。
下面来看测试代码:
在上篇文章的中代码,我们对于参数缺项没有充分考虑,在本篇的取参数的代码中,做了更多的判断,所以能够支持更多的特殊情况。但仍然存在一个没有考虑到的地方,你能指出来么?