如何打印上标?

32 投票
13 回答
147307 浏览
提问于 2025-04-17 09:07

我知道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

撰写回答