这可能是微不足道的,但我无法找到答案。请考虑以下代码:
from sympy import *
X = Symbol('X')
a=10
b=100
c=1000
d=10000
s = latex ( a*b*c*d / X )
print (s)
显示:
\frac{10000000000}{X}
我更喜欢
\frac{10^{10}}{X}
有可能吗?请注意,从文件中读取a,b,c和d。所以每次运行时价值都会发生变化。然后,以下事情不能解决我的问题:
n20 = Symbol('10')
既不是
latex(S('10**10/X', evaluate=False))
答案 0 :(得分:2)
>>> from sympy import *
>>> var('X')
X
>>> latex(S('10**20/X', evaluate=False))
'\\frac{10^{20}}{X}'
请参阅https://github.com/sympy/sympy/wiki/Quick-examples。
编辑:您编辑的问题与原版有很大不同。这是对它的回答。因为您的输入值可能不是10 r
的幂,可能不是。因此,当它表示为10的幂时,其指数可能不是整数;因此,使用十个对数基数。
from sympy import latex, sympify, Symbol
from math import log10
a=10
b=100
c=1000
d=10000
r = a * b * c * d
exponent = log10(r)
X = Symbol('X')
s = latex(sympify('10**{}/X'.format(exponent), evaluate=False))
print (s)
a, b, c
和d
的这些值的结果是\frac{10^{10.0}}{X}
。
答案 1 :(得分:1)
你所需要的只是一点帮助,它将以10的力量返回你的号码。然后将它包裹在未经评估的Mul中并将其传递给乳胶:
>>> def u10(n):
... if abs(n) < 10 or int(n) != n: return n
... s = str(n)
... m = s.rstrip('0')
... if len(m) == len(s): return n
... return Mul(int(m), Pow(10, len(s) - len(m), evaluate=0), evaluate=0)
...
>>> u10(12300)
123*10**2
>>> latex(Mul(_,1/x,evaluate=False))
'\\frac{123 \\cdot 10^{2}}{x}'�