Python 是否将xy转换为x*y?
我正在从事一个项目,其中用户以Python 是否将xy转换为x*y?,python,numpy,math,sympy,Python,Numpy,Math,Sympy,我正在从事一个项目,其中用户以xy或2x或2ab的形式输入输入,但Symphy无法理解,我想将它们转换为x*y,2*x,2*a*bSymphy实际上能够理解这一点。您需要使用来帮助它: from sympy.parsing.sympy_parser import parse_expr from sympy.parsing.sympy_parser import standard_transformations,\ implicit_multiplication_application trans
xy
或2x
或2ab
的形式输入输入,但Symphy无法理解,我想将它们转换为x*y
,2*x
,2*a*bSymphy
实际上能够理解这一点。您需要使用来帮助它:
from sympy.parsing.sympy_parser import parse_expr
from sympy.parsing.sympy_parser import standard_transformations,\
implicit_multiplication_application
transformations = (standard_transformations +
(implicit_multiplication_application,))
print(parse_expr("xy", transformations=transformations))
输出:
你的问题没有太多限制。您是否在询问如何在字符串中的字符之间插入星号?如何区分xy
表示x*y
和xy
表示“名为xy
的变量”之间的区别?编程语言不做隐式乘法是有原因的……比如,“*”。join(2ab)
假设用户输入一个等式(sin(sqrt(xy)+2ab)*e^sqrt(x))/sqrt(x),我想把它转换成(sin(sqrt(x*y)+2*a*b)*e^sqrt(x))/sqrt(x)@ShadowRanger,这在sympy
上下文中是一个合理的问题。Akshay不应该在标签中包含numpy
。但是,虽然有一个sympy
解决方案,但明智的做法是避免表达式中固有的歧义。感谢@mathfux,它适用于较小的方程,但当涉及到较大的方程时,我们喜欢“(sin(sqrt(xy)+2ab)*e^sqrt(x))/sqrt(x)”信息技术fails@AkshayR您需要为其他情况应用更多不同类型的转换,如的sympy.parsing.sympy\u parser.convert\u xor
for^
运算符等。试着在文档中查找它们。我想没有一种通用的转换组合可以适用于每种情况的用户输入。我可以猜测您想要拆分xy
和2ab
。但是为什么不sin
或sqrt
?从某种意义上说,该计划必须“解读你的意图”。