3

ユーザーが数学の質問に答えることができる小さなアプリを Python で作成しています。私が抱えている問題は、彼らの答えをチェックすることです。

「因数分解x^2 + 3x +2」のような質問があるとします。

これに答えるにはさまざまな方法があります。例えば:

  • (x + 1)(x + 2)
  • (x + 2)(x + 1)
  • (2 + x)(x + 1)

回答が別の回答と同等かどうかを確認するライブラリはありますか? 特に、与えられた答えを単純化しないもの。それで:

(x + 1)(x + 2)===(2 + x)(x + 1)

しかし

(x + 1)(x + 2)!==x^2 + 3x +2

これに wolframalpha を使用することを考えました — これは可能でしょうか — もしそうなら、どの構文を使用すればよいでしょうか?

ありがとう!

4

5 に答える 5

1

sympyのような記号数学ライブラリを使ってみることができます。

あなたの答えとユーザーによって提供されたものの両方で単純化ロジックを呼び出します。両方でロジックを実行すると、ドキュメントに記載されているこの問題に対処できます。

この関数が試みる正確な戦略は、SymPyの将来のバージョンで変更される可能性があります

于 2011-12-20T23:37:03.437 に答える
0

あなたは水泳を見たいかもしれません。AFAIKはPythonで書かれていませんが、オープンソースであるため、コードを見ていくつかのアイデアを得ることができます。

于 2011-12-20T23:37:14.620 に答える
0

そのようなもののためのライブラリは必要ないと思います。プログラムが理解できる回答(意味のある文字列)にユーザー入力を制限し、逆の操作を行って質問に一致させることで回答が正しいかどうかを確認するか、簡単な方法でラジオボタンを複数選択します。したがって、あなたの例を使用して、あなたはあなたのプログラムに彼らが与える答えを拡張させ、それをx ^ 2 +3x+2に対してチェックさせます。

于 2011-12-20T23:37:26.843 に答える
0

はい、Wolfram Alphaがこれを処理します(条件を検索に入れるだけで、ブール値が返されます)。

Wolfram Alpha API に頼ることができるように、それぞれに対してそれを行いたくないことは明らかです。彼らには Python ライブラリがあり、非営利目的での使用は無料で、1 か月あたり最大 2000 回の呼び出しが可能です。商用通話またはそれ以上の通話が必要な場合は、月額料金がかかります。

ローカル オプション (Python など) はありますが、構文、書式設定、ユーザーが悪意のある Python コードを渡さないようにすること、およびすべてをサポートすることに関して、より多くの問題が発生する可能性があります。WA-API は、ほとんどの問題を解決するはずですが、最初にテストしてください。

于 2011-12-20T23:34:40.797 に答える
0

SymPy を使用してみてください。問題の解決に役立つ場合があります。 http://docs.sympy.org/dev/gotchas.html#double-equals-signs

于 2011-12-20T23:34:48.700 に答える