我试图使用pprint
在qtconsole或终端中呈现简单的代数表达式,但结果几乎是误导性的。这是一个最小的例子
from sympy import pprint, simplify, init_printing
from sympy.abc import a, b
init_printing()
c = a - b**2
pprint(simplify(c**2))
print(simplify(c**2))
我在jupyer qtconsole
和rxvt-unicode终端中尝试了这个代码,两者都没有正确显示多级父级。在终端上,我得到括号应该是矩形符号。 qtconsole甚至更糟糕,因为它没有显示父母。
当表达式变得更复杂时,这非常令人困惑。如果我遗漏了某些内容或者是否可以将sympy配置为更好地显示,请告诉我。
答案 0 :(得分:1)
pprint
使用Unicode字符打印括号,例如
2
⎛ 2⎞
⎝a - b ⎠
您的qtconsole似乎没有呈现它们,这可能意味着您使用的字体不支持它们。
我的建议:
安装DejaVu Sans Mono并将qtconsole字体设置为该字体(请参阅https://stackoverflow.com/a/18904744/161801)。根据我的经验,DejaVu Sans Mono是SymPy使用的Unicode字符的最佳字体。
在您的计算机上安装LaTeX。如果在qtconsole中运行init_printing
SymPy检测到安装了LaTeX,它将使用它呈现数学运算(pprint
仍将呈现文本)。
如果以上都不是您的选项,则解决方法是使用pprint(expr, use_unicode=False)
,它将仅使用ASCII字符打印表达式。它看起来不太好,但它应该以任何等宽字体正确呈现。