【发布时间】:2020-03-07 11:16:47
【问题描述】:
我遇到了一个问题。一个字符串作为输入说
input_string = "12345 + x = x * 5 + (1+x)* x + (1+18/100)"
并使用 python 获取 x 的输出。我无法弄清楚这个的逻辑。
【问题讨论】:
标签: python-3.x string optimization discrete-mathematics prefix-operator
我遇到了一个问题。一个字符串作为输入说
input_string = "12345 + x = x * 5 + (1+x)* x + (1+18/100)"
并使用 python 获取 x 的输出。我无法弄清楚这个的逻辑。
【问题讨论】:
标签: python-3.x string optimization discrete-mathematics prefix-operator
这是一个完整的 SymPy 示例供您输入:
from sympy import Symbol, solve, Eq
from sympy.parsing.sympy_parser import parse_expr
input_string = "12345 + x = x * 5 + (1+x)* x + (1+18/100)"
x = Symbol('x', real=True)
lhs = parse_expr(input_string.split('=')[0], local_dict={'x':x})
rhs = parse_expr(input_string.split('=')[1], local_dict={'x':x})
print(lhs, "=", rhs)
sol = solve(Eq(lhs, rhs), x)
print(sol)
print([s.evalf() for s in sol])
这个输出:
x + 12345 = x*(x + 1) + 5*x + 59/50
[-5/2 + 9*sqrt(15247)/10, -9*sqrt(15247)/10 - 5/2]
[108.630868798908, -113.630868798908]
请注意,solve() 提供了解决方案列表。 SymPy 通常不会评估分数和平方根,因为它更喜欢不损失精度的解决方案。 evalf() 为这些表达式计算一个浮点值。
【讨论】: