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

3 投票
5 回答
1585 浏览
提问于 2025-04-17 08:44

我正在用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

我觉得你不需要什么库来做这个。你可以限制用户的输入,让他们只能输入你程序能理解的答案(就是一些有意义的字符串)。然后你可以反向操作,看看他们的答案是否正确,通过和问题进行匹配。或者你也可以简单点,使用单选按钮让他们选择答案。举个例子,你可以让你的程序把他们给出的答案展开,然后和 x^2 + 3x + 2 进行对比。

0

你可以试试使用SymPy这个工具。它可能会帮助你解决问题。http://docs.sympy.org/dev/gotchas.html#double-equals-signs

1

你可以试试使用一个叫做 sympy 的符号数学库。

对你自己的答案和用户提供的答案都使用一下 简化 的功能。这样做可以解决文档中提到的一个问题:

这个功能尝试的具体策略在未来的版本中可能会有所变化。

撰写回答