如何打印上标?
我知道Python里有一个叫做\xb的函数,但我发现它对我没用。我知道可能需要下载一个第三方模块来实现这个功能,如果真是这样,哪个模块比较好呢?
我现在正在写一个二项式展开的解算器,想要利用我自学的技能。问题出现在我尝试把用户输入的展开式显示出来让用户确认的时候。目前我只能这样打印表达式:
var1 = input("Enter a: ")
var2 = input("Enter b: ")
exponent = input("Enter n: ")
a = int(var1)
b = int(var2)
n = int(exponent)
expression = ('(%(1)dx%(2)d)^%(3)d') %\
{'1' : a, '2' : b, '3' : n}
print(expression)
confirmation = input(str("Is this correctt? Y/N "))
这样打印出来的是(2x4)^5,但我希望指数能以上标的形式显示。该怎么做呢?
13 个回答
25
在Python 3.6及以上版本中(提到这个是因为示例中使用了f-字符串,而在之前的版本中是没有的),可以通过命名的Unicode字符来轻松实现这个功能,这种方式既简单又易读。这里有一个列表。
示例:
f'\N{GREEK SMALL LETTER GAMMA}={density:.2f} t/m\N{SUPERSCRIPT THREE}'
会产生类似于
γ=1.20 t/m³
35
你需要使用一种叫做“格式化”的东西。可以用 {}\u00b2".format(area))
这样的方式,其中的 {}
会变成 ²
。下面是一个例子:
print("The area of your rectangle is {}cm\u00b2".format(area))
代码的最后会打印出 cm²
。你可以把最后的大2换成其他数字,得到不同的结果。不过,我不知道怎么做下标。
13
你可以使用 sympy
这个模块,它会为你处理好格式。它支持很多种格式,比如 ascii、unicode、latex、mathml 等等:
from sympy import pretty_print as pp, latex
from sympy.abc import a, b, n
expr = (a*b)**n
pp(expr) # default
pp(expr, use_unicode=True)
print(latex(expr))
print(expr.evalf(subs=dict(a=2,b=4,n=5)))
输出结果
n
(a*b)
n
(a⋅b)
$\left(a b\right)^{n}$
32768.0000000000