式の例: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 変数が乗算されているかどうかを確認し、それらを取り出して別のリストに入れます。上記のコードのバリエーションをいじってみましたが、常に最後の項目を無視するか、演算子が含まれています。このコードには、私が見ていない (しかしすべきである) 多くの間違いがあることは間違いありません。指摘してください。どんな助けでも大歓迎です。
申し訳ありませんが、出力について明確ではありませんでした。乗算されている x 変数 (例: 2x * 3x の両方が削除された) を equ で失いますが、乗算されていないものは残します (例: 4x の両側に + がある場合)。私は、extraEqu1 に、equ が失うすべての x 変数を持たせたいと考えています。
入力は例の方程式、または類似のものです
Jeff のコメントを使用し、extraEqu1.append と del() の両方の else ステートメント (下部の del() ではない) を変更して、値の代わりに x 変数を取得したところ、完全に機能するようになりました。何か理由は?コメント付きのコードは、私が変更したものを示しています
*注: 「SymPy を使用する」などとは言わないでください。プロジェクトとして独自のバージョンを構築しています。