如何让用户输入我可以在 python 中使用的方程式?

How do I get user to input an equation that I can use in python?

我想让用户输入一个我可以在 Python 中使用的方程式。如何修改允许我执行此操作的 raw_input 公式?

目前,我的代码中有这个:

consts = list()
nconst = int(input("How many constraints would you like to add? "))
for i in range(nconst):
    const = input("Constraint " + str(i+1) + ": ")
    consts.append(const)

我的约束条件是我希望用户输入的方程式。我希望方程式的格式为 <=.

我试过使用解析器,所以我尝试了一个使用解析器的测试用例,最后得到了这段代码。

import parser
formula = "x^2"
code = parser.expr(formula).compile()

from math import sin
x = 10
print(eval(code))

但是,当我 运行 代码时,Python 给了我 8,而答案应该是 100。我使用的解析器代码是否也有问题?

任何帮助将不胜感激!

您需要解析输入字符串并构建您的公式。例如,假设我们要计算 2 的 4 次方,那么您可以采用 2**4 或 2^4 之类的输入。在这两种情况下,根据您的方程式符号,您需要解析字符串输入并计算方程式。

如果你能提供测试用例,我或许可以帮助解析字符串。

编辑:Python 使用 ** 进行求幂,但如果您希望用户使用 ^ 作为输入,那么您可以尝试以下操作:

# say s is input
[base, exponent] = s.split('^')
print (float(base)**float(exponent))

应该可以。这样你就必须建立所有你想输入的公式。复杂的公式将需要更强大的解析器。这只是开始