Pythonで文字列方程式ソルバーを書き込むにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4135105

質問

前もって感謝します!確認するプログラムを作成しています a 真実であり、trueまたはfalseを返します。等しいサインでそれを分割し、リスト内の最初のアイテムが2番目のアイテムとvise-bersaに等しいかどうかを確認する必要があります。これが私がこれまでに持っているものです:

def s_equation(a):
    equal=a.split("=")
役に立ちましたか?

解決

eval()を使用して、方程式の各部分を評価できます。

def s_equation(a):
    left, right = a.split('=')
    return eval(left) == eval(right)

いくつかのテスト:

>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False

他のヒント

left, right = a.split("=")
assert left == right

便利な答えが必要な場合は、詳細を説明する必要があります。完全なコンピューター代数システム(Mathematicaなど)を作成しようとしていますか?それはbiiiiigプロジェクトであり、すでに数回行われています。のようなものを使用することを検討してください Sage.

編集:数学 パンチに私をbeatりました, 、使用することをお勧めします ast.literal_eval それ以外の eval 受け取る入力を信頼しない限り。

あなたはあなたの質問によく答えるのに十分な情報を本当に提供していません。アイデンティティ(つまり、代数をテストする)として、または瞬時の平等としてテストしますか?

前者の場合、(Sympyを最初にインストール):

import sympy

def s_equation(a):
    x = sympy.Symbol('x')
    y = sympy.Symbol('y')
    left, right = a.split('=')
    return eval (left + '==' + right)

利用方法:

s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top