如何用 Sympy 求解 Python 3 中的方程?

How to solve an equation in Python 3 with Sympy?

我是 Python 的新手,更多的是 Sympy,我正在尝试求解一个方程;用户引入等式和 'x' 的值。例子:eq: x**2+x*3+1, x = 4,所以把4代入等式'x',计算结果

这是我一直在尝试的:

import sympy
from sympy.solvers import solve
from sympy.core.function import Derivative
from sympy.core.relational import Eq
from sympy.core.symbol import Symbol

x = Symbol('x')

info = input("Introduce the equation and the value of /'x' \nEg: x**3+x**2+1 9\n")

infoList = info.split()

equation = infoList[0]
x_value = infoList[1]

expr = equation
eqResult = expr.subs(x, x_value)

print(eqResult)

错误是作为str对象的expr没有属性subs。 感谢任何帮助。

更新

函数eval()工作正常,但有没有风险较小的解决方案? 我一直在做其他事情并尝试计算函数的导数:

x = Symbol('x')

info = input("Introduce the equation and the value of /'x' \nEg: x**3+x**2+1 9\n")

infoList = info.split()

equation = infoList[0]
x_value = infoList[1]

exprDerivada = Derivative(equation, x)
resultDerivate = exprDerivada.doit().subs({x:x_value})

上面的代码给出了函数的一阶导数的结果,但是方程式被接受,因为它没有函数:eval()

再次感谢您的帮助。

您发送的字符串对象确实没有 subs 属性
使用 eval(expr).subs(.....) 将字符串转换为数学表达式。
然而 eval() 是一个有风险的东西,因为它会执行几乎任何东西。因此,请务必妥善保护用户输入,否则您的系统可能会被恶意用户输入破坏。有关详细说明,请参阅 this 答案。