设置输出为2**3*2**4 = 2**7而不是128

Ste*_* T. 4 python sympy

我想在sympy表达的输出设定2**3 * 2**4 =,以 2**7代替128.有一个简单的方法吗?

Shp*_*ter 5

这"有效",可能不是你真正想要的

>>> from sympy import *
>>> x = Symbol('2')

>>> x
2

>>> x**3 * x**7
2**10


>>> z = x**3 * x**7

>>> z
2**10

>>> str(z)
'2**10'
>>> eval(str(z))
1024
Run Code Online (Sandbox Code Playgroud)

添加注释(使用@if ....的建议)

>>> two = Symbol('2', positive=True, integer=True)
>>> z = two**3 * two**7
>>> z
2**10

# a little cleaner perhaps than eval(str(z))
# but requiring you to remember the name `two`
>>> z.subs(two, 2)
1024
Run Code Online (Sandbox Code Playgroud)

另外还有'作品'

>>> two**3 + two**7
2**7 + 2**3

>>> ((two**3 + two**7)).subs(two,two)
2**7 + 2**3

>>> ((two**3 + two**7)).subs(two, 2)
136
Run Code Online (Sandbox Code Playgroud)

  • 为了以防万一,定义`two = Symbol('2',positive = True,integer = True)`因此它保留了数字2的一些属性(可能与其他操作相关). (3认同)