【问题标题】:From string to sympy expression从字符串到 sympy 表达式
【发布时间】:2015-11-09 10:06:19
【问题描述】:

最近我正在使用 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()`

【问题讨论】:

  • 您可以使用 parse_expr 将字符串 s 转换为 SymPy 表达式,如下所示:docs.sympy.org/dev/modules/parsing.html
  • 我尝试在我的计算函数中使用它。它给了我一个 sympifyError:def calculate_(): first_eq = request.form['first_eq'] first_eq2= parse_expr(first_eq) result = solve(first_eq2) return result
  • first_eq的内容是什么?请使用您的代码编辑您的主要帖子。
  • 我添加了我的代码。 first_eq 的内容是一个等于零的表达式。

标签: python flask sympy


【解决方案1】:

【讨论】:

  • 简化完成后,如何将结果表达式转换回字符串?
  • @user3116936 使用str 函数。
  • 这个答案使用eval(),很危险
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多