从字符串转换为sympy表达式

14

最近我正在开发一个Web应用程序,使用Flask和sympy库。用户在文本区域中输入他的方程式,Flask将其作为字符串接收。我想通过使用sympy函数solve()来计算这个方程式的结果。但是为此,我必须将这个字符串转换为sympy表达式。我该怎么做?

from flask import Flask,request,render_template,flash
from sympy import *
from sympy.parsing.sympy_parser import *

x = symbols('x')
app = Flask(__name__)
app.secret_key = 'mysecretkey'


def calculate_():
    first_eq = request.form['first_eq']

    first_eq2= parse_expr(first_eq)
    result = solve(first_eq2)
    return result


@app.route("/",methods=['GET', 'POST'])
def myGet():

    return render_template("my-form.html")

@app.route("/myPost/",methods=['GET', 'POST'])
def myPost():
    answer = request.form['answer']
    result_of_answer=solve(Eq(answer),x)
    result = calculate_()
    try:
        if result == result_of_answer:
            flash("you got it!")
        else:
            flash("no, it's wrong")
            return render_template("my-form.html")
    except:
        flash("sorry, wrong type. Try again!")
        return render_template("my-form.html")
if __name__ == '__main__':
    app.run()

您可以使用parse_expr来将字符串s转换为SymPy表达式,方法如下:http://docs.sympy.org/dev/modules/parsing.html - Avión
我尝试在我的calculate_函数中使用它。它给了我一个sympifyError错误:def calculate_(): first_eq = request.form['first_eq'] first_eq2= parse_expr(first_eq) result = solve(first_eq2) return result - Vasile
first_eq的内容是什么?请在您的主贴中编辑您的代码。 - Avión
我添加了我的代码。first_eq的内容是一个等于零的表达式。 - Vasile
2个回答

12

10

6
这个答案使用了 eval(),是危险的。 - Alec
1
参见:Simpify有多安全?(简而言之:不安全) - Stef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接