带变量的 Python 字符串表达式求值

Posted

技术标签:

【中文标题】带变量的 Python 字符串表达式求值【英文标题】:Python string expression evaluation with variable 【发布时间】:2019-02-21 08:48:02 【问题描述】:

我有一个表达式字符串“2 + (y * 11) = 42” 我打算将“y”隔离到 LHS 和 将字符串转换为“y = (42 - 2) / 11”

我该怎么做,我是 python3 的新手。 提前致谢。

【问题讨论】:

看看sypmy 问题只是通过在一侧隔离变量来转换字符串,而不是解决它。我不确定是否可以使用 sympy 或 z3 隔离变量。 ...隔离变量(在您的情况下)与求解方程相同。如果你不想使用sympy,我不确定你是否可以用更少的代码做到这一点。 我需要做的就是在隔离变量的同时保持方程不变 一般?或者只是一个线性方程?我仍然认为 sympy 是最简单的方法。 【参考方案1】:

如果你安装了sympy,你可以这样做:

from sympy.solvers import solve
from sympy import Symbol
y = Symbol('y')
sol = solve(2 + (y * 11) - 42, y)
print(sol)  # [40/11]

请注意,solve 将尝试在 LHS 上找到多项式的根 - 因此是 - 42

【讨论】:

问题只是通过在一侧隔离变量来转换字符串,而不是解决它。我不确定是否可以使用 sympy 或 z3 隔离变量

以上是关于带变量的 Python 字符串表达式求值的主要内容,如果未能解决你的问题,请参考以下文章

python 短路求值或惰性求值

C++:算术表达式求值

C语言关于表达式求值

C语言编一个实现简单的算术表达式求值的代码。

表达式求值

typedef声明变量也是一种求值过程