11、定义一个函数 “quadratic(a,b,c)”,接收三个参数,返回一元二次方程:
ax² + bx + c = 0 的两个解。(提示:计算平方根可以调用math.sqrt()函数)
以下是我写的代码
import math
def quadratic(a, b, c):
if type(a) == float or type(a) == int and type(b) == float or type(b) == int and type(c) == float or type(c) == int:
z = b ** 2 - 4 * a * c
if a == 0:
x = -c / b
print("此方程的解为:", x)
if z == 0:
x = -b / 2 * a
print("此方程的解为:", x)
if z > 0:
t = float(math.sqrt(z))
x = ((-b) - t) / 2 * a
y = ((-b) + t) / 2 * a
print("此方程的解为:", x, "和", y)
else:
print("该方程无解")
else:
print("请输入合法的字符!")
quadratic(2, 5, 6)
不过今天看到了一个大佬的解法
以下内容为转载
Python解一元一次方程只需要三行就完成了,确实很强悍啊
def s(eq, var='x'):
r = eval(eq.replace('=', '-(') + ')', {var:1j})
return -r.real / r.imag
原理如下:
这个段代码的关键是利用了复数。
第一步:
2 * x + 233 = x * 8 + 3
变成
2 * x + 233 -(x * 8 + 3)
然后把x变成虚数1j
然后变成
2 * 1j + 233 -(1j * 8 + 3)
通过eval算出结果为230-6j
因为我们知道这个表达式结果为0,而且j也相当于x。
所以问题变成了:230-6j=0,也就是230-6x=0。
最后x = - 230 / 6 = 38.33333333336。
这里的核心是用到了Python的黑暗魔法eval,eval的第一个参数是表达式,第二个参数是命名空间,也就是把 x = 1j 通过第二个参数把一些值放进去
转载地址是
https://www.cnblogs.com/cheer-wang/p/2817886.html
来源:CSDN
作者:星痕落雪
链接:https://blog.csdn.net/qq_43761222/article/details/103872848