python - 我的代数求解器哪里出了问题?

标签 python linear-algebra

示例方程:2x * 3x + 4x * 5x * 6x

for k in equ:
        if k == '*':
            if equ[equ.index(k)-1] == 'x':
                extraEqu1.append('1x')
                del(equ[equ.index(k)-1])
            else:
                x = equ[equ.index(k)-1]
                if 'x' in x:
                    extraEqu1.append(equ[equ.index(k)-1]) #extraEqu1.append(x)
                    del(equ[equ.index(k)-1])              #del(x)
            if equ[equ.index(k)+1] == 'x':
                extraEqu1.append('1x')
                del(equ[equ.index(k)+1])
            else:
                x = equ[equ.index(k)+1]
                if 'x' in x:
                    extraEqu1.append(equ[equ.index(k)+1]) #extraEqu1.append(x)
                    del(equ[equ.index(k)+1])              #del(x)
            del(equ[equ.index(k)])

检查是否有任何 x 变量正在相乘,将它们取出并将它们放入不同的列表中。我一直在尝试上述代码的变体,它总是忽略最后一项或包含运算符。我毫不怀疑这段代码有很多我没有看到(但应该)的错误,请指出。如有任何帮助,我们将不胜感激。

抱歉,我对输出不太清楚。我希望 equ 丢失任何被相乘的 x 变量(例如:2x * 3x 都被删除),但保留任何未相乘的变量(例如:如果 4x 两边都有一个 +)。我希望 extraEqu1 拥有 equ 会丢失的所有 x 变量。

输入是示例方程或类似的内容

我使用了 Jeff 的注释,并更改了两个 else 语句中的 extraEqu1.append 和 del() (但不是底部的 del())以采用 x 变量而不是它的值,现在它工作得完美。有什么理由吗?注释的代码显示了我更改的内容

*注意:请不要说“使用 SymPy”或任何其他内容,我正在将自己的版本构建为项目

最佳答案

我不清楚你的任务,但如果你需要更好地反汇编数学表达式来使用正则表达式 python re 这是查找所有 x 的示例

import re

txt='2x * 3x + 4x * 5x * 6x'

re1='(\\d+)'    # Integer Number 1
re2='(x)'   # Any Single Character 1

rg = re.compile(re1+re2,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
    int1=m.group(1)
    c1=m.group(2)
print "("+int1+")"+"("+c1+")"+"\n"

如果您不熟悉正则表达式,您可以尝试正则表达式生成器,例如 txt2re.com

关于python - 我的代数求解器哪里出了问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958829/

相关文章:

python - 如何有效地扩展 numpy 中的分解张量?

Python线程,杀死线程

python - 在Python中显示一列中n个元素的排列的方法

python - 如何将键控 2 列表列表转换为相同键控 N 列表列表?

graphics - 公制 3d 重建

java - 在 Java 中使用 COLT 求解线性系统

python - numpy 可以用实算术对角化斜对称矩阵吗?

python - 在日志记录中覆盖 "funcName"

python - 使用 linux 或 python 从文件中提取特定的列和字符串

c++ - 从鼠标位置数学设置 Actor 世界位置