我想让用户输入一个我可以在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的答案。我使用的解析器代码是否也存在问题?
任何帮助将不胜感激!
答案 0 :(得分:0)
您需要解析输入字符串并构建公式。例如,假设我们想要将2提高到4,那么你可以输入2 ** 4或2 ^ 4等输入。在两种情况下,根据您的方程符号,您需要解析字符串输入并评估方程式。
如果您可以提供测试用例,那么我可以帮助解析字符串。
编辑:Python使用**进行取幂,但如果您希望用户使用^作为输入,那么您可以尝试以下操作:
# say s is input
[base, exponent] = s.split('^')
print (float(base)**float(exponent))
那应该有用。这样你就必须建立你想要输入的所有公式。复杂的公式将需要更强大的解析器。
这只是一件事