以下是一种非常简单的方法(仅适用于两个分数的情况):
def print_fractions(expr):
print("({}) * ({})".format(*expr.args))
这是工作原理:
如下图所示:
In: expr = sympy.Mul(sympy.S("5/7"), sympy.S("3/4"), evaluate=False)
In: expr
Out: 5*3/(7*4)
In: print_fractions(expr)
Out: (5/7) * (3/4)
您可以使用srepr
来检查分数在expr
中实际上没有组合,这只是sympy决定打印的方式:
In: sympy.srepr(expr)
Out: 'Mul(Rational(5, 7), Rational(3, 4))'
另一种方法是扩展 sympy.Mul
并重写 __str__
方法:
class MyMul(sympy.Mul):
def __str__(self):
return "({}) * ({})".format(*self.args)
然后你将拥有:
In: expr = MyMul(sympy.S("5/7"), sympy.S("3/4"), evaluate=False)
In: print(expr)
Out: (5/7) * (3/4)
编辑:如何使latex()
正常工作
再次采用hackish方法,但是:
class MyMul(Mul):
def _latex(self, _):
return r"\left({} \cdot {}\right)".format(*map(latex, self.args))
现在:
In: a = S("5/7")
In: b = S("3/4")
In: c = MyMul(a, b, evaluate=False)
In: print(latex(c))
Out: \left(\frac{5}{7} \cdot \frac{3}{4}\right)
您IP地址为146.190.162.183,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。