前もって感謝します!a
trueかどうかを確認し、TrueまたはFalseを返すプログラムを作成しています。等号で分割してから、リストの最初の項目が2番目の項目と等しいかどうかを確認する必要があります。その逆も同様です。これが私がこれまでに持っているものです:
def s_equation(a):
equal=a.split("=")
left, right = a.split("=")
assert left == right
有用な回答が必要な場合は、それよりも詳細な情報を提供する必要があります。完全なコンピュータ代数システム (Mathematica など) を書こうとしていますか? これは biiiiig プロジェクトであり、すでに数回行われています。のようなものを使用することを検討してくださいSage
。
編集: math Beat me to the chanceですが、受け取る入力を信頼しない限り、ast.literal_eval
代わりに を使用することをお勧めします。eval
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
質問にうまく答えるのに十分な情報を提供していません。それを恒等式としてテストしますか (つまり、代数をテストします)、それとも瞬時の等価性としてテストしますか?
前者の場合 (最初に 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