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

时间:2016-12-14 06:21:29

标签: python constraints linear-programming

我想让用户输入一个我可以在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))

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要解析输入字符串并构建公式。例如,假设我们想要将2提高到4,那么你可以输入2 ** 4或2 ^ 4等输入。在两种情况下,根据您的方程符号,您需要解析字符串输入并评估方程式。

如果您可以提供测试用例,那么我可以帮助解析字符串。

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

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

那应该有用。这样你就必须建立你想要输入的所有公式。复杂的公式将需要更强大的解析器。

这只是一件事