如何让用户输入我可以在 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))
应该可以。这样你就必须建立所有你想输入的公式。复杂的公式将需要更强大的解析器。这只是开始
我想让用户输入一个我可以在 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))
应该可以。这样你就必须建立所有你想输入的公式。复杂的公式将需要更强大的解析器。这只是开始