如何计算Symphy字典中的字符串

7ajki6be  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(322)

嗨,对于这段代码,有没有一种方法可以代替一长串的数学方程来计算sol字典中的答案?当我试图通过dict键访问答案时 sol[i][x] . 它只是给了我x的关键错误。因此,我无法以这种方式对其进行评估。还有别的办法解决这个问题吗?
这是错误:名称错误名称错误:未定义名称“x”
这是我的密码:

@app.route('/simult', methods = ['GET', "POST"])
def simult():
  sign1 = ""
  sign2 = ""
  if os.path.exists("data.json"):
        with open("data.json") as datafile:
            saveddata = json.load(datafile)
  if request.method == "POST":
    saveddata["x1"] = request.form["x1"]
    saveddata["y1"] = request.form["y1"]
    saveddata["x2"] = request.form["x2"]
    saveddata["y2"] = request.form["y2"]
    saveddata["px1"] = request.form["px1"]
    saveddata["py1"] = request.form["py1"]
    saveddata["px2"] = request.form["px2"]
    saveddata["py2"] = request.form["py2"]
    saveddata["sign1"] = request.form["sign1"]
    saveddata["sign2"] = request.form["sign2"]
    saveddata["ans1"] = request.form["ans1"]
    saveddata["ans2"] = request.form["ans2"]
    if saveddata["sign1"] == "":
        sign1 = ""
    if saveddata["sign1"] == "+":
        sign1 = '+'
    if saveddata["sign1"] == "-":
        sign1 = '-'
    if saveddata["sign1"] == "x":
        sign1 = '*'
    if saveddata["sign1"] == "^":
        sign1 = "**"
    if saveddata["sign1"] == "/":
        sign1 = "/"
    if saveddata["sign2"] == "":
        sign2 = ""
    if saveddata["sign2"] == "+":
        sign2 = '+'
    if saveddata["sign2"] == "-":
        sign2 = '-'
    if saveddata["sign2"] == "x":
        sign2 = '*'
    if saveddata["sign2"] == "^":
        sign2 = "**"
    if saveddata["sign2"] == "/":
        sign2 = "/"
    saveddata["sign1"] = sign1
    saveddata["sign2"] = sign2
  with open("data.json", "w") as datafile:
        json.dump(saveddata, datafile)
  return render_template("Simaltaenous.html")

sol的一个例子:(一些因为格式问题而加粗,但这并不重要)
(1/3)(1/3)(1/3)1/3(1/3)(1/3)(1/3)(3)(1/3)(1/3)(1/3)(1/3)(1/3)(1/3)(1/3)(1/3)(1/3)(1/3(1/3)(1/3(1/3)(1/3)(1/3)(1/3)(1/3)(1/1/3)(1/3)(1/3/3/3(3/3/3/4125/4125/314925/314928/314928/314928/314928/314928+5/4128+5/412828+5+5+5+5+5+5+5+5+5及5)及5)及5)及5)及5(5)及5)上述上述上述上述上述上述上述上述上述上述上述上述上述两两两两两两两两两两两两两两两两+5(5(5)及5(5 4928+5平方米(524145)/314928(1/3)+10/27))/2)2/5,y:-sqrt(-40/(729(-3325/314928+5sqrt(524145)/314928)(1/3))+2*(-3325/314928+5sqrt(524145)/314928)
(1/3)+10/27)/2+sqrt(-2(-3325/314928+5sqrt(524145)/314928)(1/3)+40/(729(-3325/314928+5sqrt(524145)/314928)(1/3))+20/27+10/(8125/(524145)/314928)5sqrt(524145)/314928)(1/3)+10/27))/2},(1/3 3)1/3 3)1/3 3(1/3)2(2(-3325/314925/314928/314928/314928/314925/314928/314928+5 sqrt(52414145/314928/314928/314928/52414125/314925/314925/314928/314928+5及5万万平方(52414141414141414128)(5241414141414141414128//中中中中介介介介上述上述上述上述上述上述上述上述上述上述上述三三三三三三三三三三个(1/1/1/1/1/1(1/三三三三三三三三三三三三三三三三三个))1/1-18(1-18(1-18(1-18(1-18(1-18(1/3)1/1/3)1-18(1/3)1-18(+5平方米(524145)/314928(1/3))+20/27)/2)2/5,y:sqrt(-40/(729(-3325/314928+5sqrt(524145)/314928)(1/3))+2(-3325/314928+5sqrt(524145)/314928)(1/3)+10/27)/2-sqrt(-10/(81sqrt(-40/(729*(-3325/314928+5sqrt(524145)/314928)(1/3))+2(-3325/314928+5sqrt(524145)/314928)**(1/27)/2(-3325/314928+5sqrt(524145)/314928)5sqrt(524145)/314928)(1/3))+20/27)/2},(1/3)(1/3 3)1至1至18(一)1-18(一个以下以下以下以下十十十十十十十十十十十(以下以下以下以下以下以下以下以下十十十十十十十十点:x:1月十十:1-18(一)18个(sqrt(40//////以下以下以下以下以下以下以下以下以下以下任何一一一个/1/1/三三三三三三)18(一)18(一)18)18)18(一个)18(第十八十八十八十八十八十八(一个)18(一个)18个(或18)18(一个)18(门门门联联联准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准准(40(40(40////////(40(40////////////////////+5平方米(524145)/314928(1/3))+20/27)/2)2/5,y:sqrt(-40/(729(-3325/314928+5sqrt(524145)/314928)(1/3))+2(-3325/314928+5sqrt(524145)/314928)(1/3)+10/27)/2+sqrt(-10/(81sqrt(-40/(729*(-3325/314928+5sqrt(524145)/314928)(1/3))+2(-3325/314928+5sqrt(524145)/314928)(1/3)+5sqrt(524145)/314928)(1/3))+20/27)/2},(一)x:1-18(一)18(一个以下以下以下以下以下以下任何一个机构:1-18(一)18(一个以下以下以下以下以下以下以下以下任何一个(一)x:1-18(一)x:1-18(一)18(一个)18(以下以下以下以下以下以下任何一个(一)十八十八十八十八(以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下任何任何一个(一个)任何一个(一个)中中环???????????扑扑扑扑扑扑扑扑灭或或或第十八十八十八十八十八十八十八十八十八(一个(一)18)18)18(以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下一个(一个)18(一个(一个)18)18)18(一个(一个)18)18(一个(一个)18)18)18)18)18 28+5平方米(524145)/314928(1/3)+10/27)/2/5,y:-sqrt(-2(-3325/314928+5sqrt(524145)/314928)(1/3)+40/(729(-3325/314928+5sqrt(524145)/314928)(1/3))+20/27+10/(81sqrt(-40/(729*(-3325/314928+5sqrt(524145)/314928)(1/3))+2(-3325/314928+5sqrt(524145)/314928)(1/3)+*(10/27))/2-sqrt(-40/(7225/314925)/314928)(524145)/314928)**(3325/314928)/314928)5*sqrt(524145)/314928)(1/3)+10/27)/2}]

sqougxex

sqougxex1#

使用原始代码:

In [45]: from sympy.parsing.sympy_parser import parse_expr, standard_transformations, implicit_multiplication_application
    ...: 

In [46]: eqs = ['2w + x + 4y + 3z = 5',
    ...:        'w - 2x + 3z = 3',
    ...:        '3w + 2x - y + z = -1',
    ...:        '4x - 5z = -3']
    ...: transformations=(standard_transformations + (implicit_multiplication_ap
    ...: plication,))
    ...: eqs_sympy = [Eq(parse_expr(e.split('=')[0], transformations=transformat
    ...: ions),
    ...:                 parse_expr(e.split('=')[1], transformations=transformat
    ...: ions))
    ...:              for e in eqs]
    ...: sol = solve(eqs_sympy)

In [47]: sol
Out[47]: 
⎧   94               74     -53 ⎫
⎨w: ──, x: -20/9, y: ──, z: ────⎬
⎩   45               45      45 ⎭

Out[49]: dict_keys([w, x, y, z])

我不明白 NameError 当试图使用 sol[w] 因为我的 isympy 会话已定义变量,如 w ,但我不知道关键错误。这个 keys 是从 eqs 串。
我可以通过迭代键来获得值

In [52]: for i in sol.keys():
    ...:     print(sol[i])
    ...: 
94/45
-20/9
74/45
-53/45

甚至使用标准 dict 方法:

In [53]: sol.values()
Out[53]: dict_values([94/45, -20/9, 74/45, -53/45])

In [54]: list(sol.values())
Out[54]: 
⎡94         74  -53 ⎤
⎢──, -20/9, ──, ────⎥
⎣45         45   45 ⎦

In [55]: sol.items()
Out[55]: dict_items([(w, 94/45), (x, -20/9), (y, 74/45), (z, -53/45)])

我可以把这些符号从盒子里拿出来 eqs_sympy :

In [71]: eqs_sympy
Out[71]: 
[2⋅w + x + 4⋅y + 3⋅z = 5, w - 2⋅x + 3⋅z = 3, 3⋅w + 2⋅x - y + z = -1, 4⋅x - 5⋅z = -3]

In [72]: eqs_sympy[0]
Out[72]: 2⋅w + x + 4⋅y + 3⋅z = 5

In [73]: eqs_sympy[0].args[0].free_symbols
Out[73]: {w, x, y, z}

In [74]: tuple(eqs_sympy[0].args[0].free_symbols)
Out[74]: (x, z, w, y)

In [75]: x,z,w,y=tuple(eqs_sympy[0].args[0].free_symbols)

In [76]: sol[x]
Out[76]: -20/9

相关问题