我对Python比较陌生,我现在正在尝试制作一个基本转换器(这样可以在基数10中输入一个数字,并以十六进制或二进制形式接收该数字的输出等)。为了增加我的程序的清晰度,我一直在尝试使用unicode数据,特别是u+208
到u+209
中的字符来打印下标数字,以便用户知道打印时数字的基数
到目前为止,我的代码是:
import unicodedata
cNum = int(input("Please enter your number: "))
oBase = int(input("Please enter the base you are converting from. "))
nBase = int(input("Please enter the base are you converting to. "))
baseSub = "u'" + "\\u" + str(2080 + nBase) + "'"
baseSub.decode('utf-8')
print(subBase)
subBase是我试图转换为unicode的字符串,允许打印新基数的下标数字(这样如果我在十进制中输入2,则输出可以打印为1,下标为2 )。我一直在做的只是编写一堆IF语句来检查nBase是1,2,3等等。但它非常笨拙。通常,要打印每个下标,print语句将是(u'\u208x
')(x是您要打印的任何下标形式0-9)。上面的代码是我尝试创建一个unicode字符串,即(u'\u208x
'),其中x是nBase。如果没有解码功能,将subBase指定为“u”+“\ u”... ...会打印一个u'\u208x
'的文字字符串。否则会出现subBase没有属性“decode”的错误。如果有办法,如何在不使用大量IF语句的情况下,从unicode中可靠地打印下标数字?
答案 0 :(得分:0)
这可以将任何数字转换为其下标代码点:
number = 1234567890
print(''.join(chr(0x2080+int(c)) for c in str(number)))
输出:
₁₂₃₄₅₆₇₈₉₀
请注意,输出编码和字体需要支持字符。
chr
将数字转换为其Unicode等效值,U+2080
是十六进制的Unicode代码点,因此您需要0x2080
而不是2080
。