Суть моей проблемы заключается в следующем: я строю строковую переменную в функции с именем: sol_expr. Когда я печатаю (sol_expr), результат выглядит точно так, как мне нужно, а именно:
'%s = %s \\text{ or } %s' %(sym.latex(expr3), sym.latex(sol[0]),sym.latex(sol[1]))
Однако, когда я использую следующий код
display(Math('%s' %(sol_expr) ))
, я получаю какрезультат: ′
Меня сбивает с толку то, что приведенный ниже код делает именно то, что я хочу:
sol_expr = '%s = %s \\text{ or } %s' %(sym.latex(expr3), sym.latex(sol[0]),sym.latex(sol[1]))
display(Math('%s' %(sol_expr) ))
Я не понимаю разницы. Кто-нибудь может раскрыть слепое пятно?
Для полноты полного кода
import sympy as sym
import numpy as np
from IPython.display import display, Math, Latex
sym.init_printing() # allows the Latex rendering in Markdown cells
# function to construct the expression to be used with the Display function
def construct_sol_expr(nr_of_sols):
# construct statement part
dyn_expr = '%s = %s'
for n in range(1,nr_of_sols):
dyn_expr = dyn_expr + r' \\text{ or } %s'
dyn_expr = "'%s'" %(sym.latex(dyn_expr))
# construct parameter part
par_expr = ''
for p in range(0,nr_of_sols):
# if there is more than 1 parameter neccessary, you need a comma
if p != nr_of_sols-1:
comma = ','
else:
comma = ''
par_expr = par_expr + 'sym.latex(sol[' + str(p) + '])' + comma
# tie it together
sol_expr = dyn_expr + ' %(' + 'sym.latex(expr3), ' + par_expr + ')'
return sol_expr, dyn_expr, par_expr
q = sym.symbols('q')
expr1 = 3*q + 4/q + 3
expr2 = 5*q + 1/q + 1
expr3 = expr1 -expr2
sol = sym.solve(expr3, q)
sol_expr, dyn_expr, par_expr = construct_sol_expr(len(sol))
print(sol_expr)
# '%s = %s \\text{ or } %s' %(sym.latex(expr3), sym.latex(sol[0]),sym.latex(sol[1]))
# Uncomment to see my issue
# sol_expr = '%s = %s \\text{ or } %s' %(sym.latex(expr3), sym.latex(sol[0]),sym.latex(sol[1]))
display(Math('%s' %(sol_expr) ))