python-3.x 没有新线我怎么打印漂亮?

xyhw6mcr  于 2023-03-20  发布在  Python
关注(0)|答案(1)|浏览(167)

如何在smp.pprint中不使用换行符?这样我就可以在两个smp.pprint函数之间放置一个“=”符号。

import sympy as smp

Um, x = smp.symbols('Um wt', positive = True, real=True)

f = (Um * smp.sin(x)) / smp.pi

smp.pprint(smp.Integral(f, (x, 0, smp.pi)))

smp.pprint(smp.integrate(f, (x, 0, smp.pi)))

我试着格式化只给我积分的东西(Um*sin(wt)/pi,(wt,0,pi))和pformat在symy中不存在的东西。

yebdmbv4

yebdmbv41#

你可以使用类似pprint(Eq(Integral(x,(x,0,1)),integrate(x,(x,0,1))))这样的代码来打印一个表达式,显示一个积分的未求值形式和已求值形式。
但是要回答你的问题,你可以捕获pprint产生的字符串,去掉换行符,然后把它添加到另一个字符串中:

>>> from sympy.utilities.iterables import capture
>>> lhs = capture(lambda: pprint(Integral(x,(x,0,1)))).rstrip('\n')
>>> rhs = capture(lambda: pprint(integrate(x,(x,0,1))))
>>> print('%s = %s' % (lhs, rhs))

但是这种简单的方法不能处理表达式的对齐,我建议使用Eq表单自动完成,否则,您可以深入研究SymPy提供的字符串排版算法。

相关问题