0

前もって感謝します!atrueかどうかを確認し、TrueまたはFalseを返すプログラムを作成しています。等号で分割してから、リストの最初の項目が2番目の項目と等しいかどうかを確認する必要があります。その逆も同様です。これが私がこれまでに持っているものです:

def s_equation(a):
    equal=a.split("=")
4

3 に答える 3

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

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

編集: math Beat me to the chanceですが、受け取る入力を信頼しない限り、ast.literal_eval代わりに を使用することをお勧めします。eval

于 2010-11-09T15:03:35.857 に答える
3

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
于 2010-11-09T15:07:14.270 に答える
0

質問にうまく答えるのに十分な情報を提供していません。それを恒等式としてテストしますか (つまり、代数をテストします)、それとも瞬時の等価性としてテストしますか?

前者の場合 (最初に 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
于 2010-11-09T16:20:24.940 に答える