从字符串到sympy表达

时间:2015-11-09 10:06:19

标签: python flask sympy

最近我使用Flask和sympy库开发了一个Web应用程序。用户在textarea中输入他的等式,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()`

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

sympify()使用eval(),这很危险。请改用sympy.parsing.sympy_parser.parse_expr()