如何基于给定映射字典循环动态生成数字对应的Unicode上标字符
实现逻辑
多位数不需要单独做位数分支判断,统一将数字拆分为单个数位,逐位映射Unicode上标字符后拼接即可,逻辑兼容1位、2位、3位及更多位数的转换需求。
完整实现代码
首先是通用转换方法:
# 给定的上标映射字典 UNICODE_CHARS = { 0: "\u2070", 1: "\u00B9", 2: "\u00B2", 3: "\u00B3", 4: "\u2074", 5: "\u2075", 6: "\u2076", 7: "\u2077", 8: "\u2078", 9: "\u2079", } def num_to_superscript(num: int) -> str: # 转字符串拆分每一位,逐位映射后拼接 return ''.join([UNICODE_CHARS[int(digit)] for digit in str(num)]) # 循环输出0~999对应的上标字符 for i in range(1000): print(num_to_superscript(i))
如果你不需要单独封装函数,也可以直接在循环内完成转换:
for i in range(1000): superscript_str = ''.join(UNICODE_CHARS[int(d)] for d in str(i)) print(superscript_str)
逻辑说明
- 用
str(num)将整数转为字符串,直接按字符拆分出每一位数字,例如数字177转为字符串后得到"177",遍历后得到"1"、"7"、"7"三个单个数字字符 - 每个字符用
int(digit)转回整数,从UNICODE_CHARS字典中取出对应的上标Unicode字符 - 用
str.join()方法将所有位的上标字符拼接为完整的上标字符串,自动适配任意位数的输入
内容的提问来源于stack exchange,提问作者erikvm
相关产品推荐
相关产品推荐

