当前位置:  开发笔记 > 编程语言 > 正文

如何将以字符串形式给出的方程式分解为系数,变量和幂?

如何解决《如何将以字符串形式给出的方程式分解为系数,变量和幂?》经验,为你挑选了1个好方法。

因此,我必须创建一个采用以下形式的字符串的程序: 2x^3 + x^2 - 4并计算其派生值,即使其像这样:6x^2 + 2x

因此,我正在创建一个class Monomial具有三个成员变量的变量:系数,变量名称和功效。换句话说,我必须将多项式分解为单项式。然后,我必须将每个单项式分解为上述变量。因此2x^3将表示为以下对象:Monomial(2, 'x', 3)

但是,我该如何专门分割字符串呢?我不想使用“ SymPy”或其他库来轻松计算导数。



1> Jblasco..:

我会使用正则表达式:

pattern = "(\d+)?([a-z])\^(\d+)"
result = re.match(pattern, "323x^22")
print result.groups() 

产生:

('323', 'x', '22')

模式说明如下:

每个括号将包含一个组,第一个括号与由“ \ d”指示的数字匹配,并与尽可能多的由“ +”指示的数字匹配。问号表示如果没有匹配项(例如,因为x ^ 2),则确定为OK。在中心组中,您会看到[az],它将匹配任何单个小写字母。因此,如果您找到“ 23c ^ 2”,它也会匹配。最后,您需要转而使用“ \ ^”转义“ ^”符号,该符号在正则表达式中具有其自身的含义。

result = re.match(pattern, "x^2")
print result.groups()

现在,对于输入“ x ^ 2”,此代码将产生:

(None, 'x', '2')

因此只需确保将None替换为1。

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有