检查两个数学答案是否相同

时间:2011-12-20 23:26:42

标签: python math wolframalpha

我正在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 - 这是可能的 - 如果是的话,我应该使用什么语法?

谢谢!

5 个答案:

答案 0 :(得分:1)

您可以尝试使用像sympy这样的符号数学库。

在答案和用户提供的答案上调用simplify逻辑。在两个地址上运行逻辑,此问题在文档中指出:

  

此函数尝试的确切策略可以在将来的版本中更改   SymPy

答案 1 :(得分:0)

是的Wolfram Alpha会处理这个问题(只是将你的条件粘在搜索中,它会返回一个布尔值)。

你显然不希望每个人都这样做,所以你可以转向the Wolfram Alpha API。他们有一个Python库,它可以免费用于非商业用途,每月最多2000个电话。如果您需要商业电话或更多电话,他们会按月收取费用。

有本地选项(如Python)但你可能会遇到更多语法,格式化问题,确保用户不会传入恶意Python代码并只支持所有内容。 WA-API应该为您删除大部分问题,但首先进行测试。

答案 2 :(得分:0)

您可以尝试使用SymPy。它可能有助于解决您的问题。 http://docs.sympy.org/dev/gotchas.html#double-equals-signs

答案 3 :(得分:0)

您可能需要查看wims。 AFAIK它不是用python编写的,但它是开源的,所以你可以查看代码并获得一些想法。

答案 4 :(得分:0)

我认为你不需要像这样的东西。您的用户输入仅限于程序理解的答案(有意义的字符串),然后通过匹配问题进行反向操作以查找答案是否正确,或者采取简单的方法并选择单选按钮。因此,使用您的示例,您的程序会扩展他们给出的答案,并根据x ^ 2 + 3x +2进行检查。