代码打印颜色(只要您能想到的,都行)——我的颜色控制打印工具mypycolor已经更聪明:参数可以任意接收颜色控制码、颜色描述英文单词的任意组合。


【点击此处跳转笔记正文】

Python 官网https://www.python.org/




  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


升级迭代:
让我的mypycolor更聪明
(参数可以任意接收颜色控制码、颜色描述单词的任意组合)


目 录


mypycolor工具成长历程


回页首

  mypycolor工具其实就是一个Color类,她加载时__init__魔术方法在机器内存中创建一个“颜色描述单词”->“颜色控制码”一一对应的coloe_dict,当遇到颜色描述单词参数时,就在字典中“拾取”对应的控制码替换在颜色控制码组合中的颜色描述单词。
  此次修改升级,目的和想要的样子,已经在代码注释中讲明,就直接借助help(Color())的内容了。😋

  此次更新,缘于上次对原“函数”结构的Color工具的不满:重新用Python类打造后,简洁倒是不错,但在易用性上不敌原版。这次在原基础上更新,上次用类重建的代码基本没作更改虽然发现一些可以优化的地方(谁让我很懒哩🤪)。这次升级迭代后,让我的Color无惧色彩控制编码和英文单词字符串作为颜色设置参数,可以单用也可以混用,依然可以无视顺序。
  这样子,既可以满足对数字控制码独衷的进行简略代码设置,又能适用对数字“吃力”而热衷英文单词描述的方便书写✍代码。(2022-10-01)

help(Color())截屏图片
在这里插入图片描述


回页首

Color()中的可用方法

  Color()中的可用方法中,就set_color(self, string, *set_colors)方法才是mypycolor工具的主角,其他都是帮助认识她的陪衬。

  字符串设置打印颜色效果:返回嵌入“色彩控制码”的字符串。
  string,需设定颜色的字符串。   *set_colors,用元组收集控制码、英文单词组 合(任意组合,要可以是纯控制码或者纯颜色描述单词, 亦或是二者混合的组合。)。
  前景色、背景色和特殊效果任意组合,参数用英文状态逗号分隔,位置没分先后。前景色直接英文单词,背景色在单词前加“b_”前缀,特殊效果样式在单词前加“s_”前缀。
  (目录前收录共计35个颜色描述基词:black red green yellow blue magenta cyan white dark inky atramentous flammulated grassy xanthic blove cerulean purple violescent violaceous albicans gray off_all bright dim incline inclined underline emphasize overstriking inverse blanking strickout normal blank nothing)

help(Color())截屏图片
在这里插入图片描述


回页首

  如果在操作系统终端直接键入python mypycolor.py执行工具py文件,会得到如下包含版本信息和工具所含方法名称的界面,任意键后会打印Color()的文档。

python mypycolor.py

直接run工具mypycolor.py第一个界面截屏图片
在这里插入图片描述


回页首

带你认识mypycolor工具的几个图表

加载Color()并调用show_color_words()方法

from lib.mypycolor import Color


c = Color() # 工具类实例。
c.show_color_words() # 展示颜色描述基词。

基词列表截屏图片
在这里插入图片描述

打印所有单词参数形式的效果

c.show_color_names() # 展示所有颜色描述单词的参数形式。。

All English word截屏图片(跳过图片)
在这里插入图片描述

  打印展示上一版本就有的两个表(截屏图片太长,可以点击“这里”跳过)

c.show_colors() # 展示所有颜色控制码对应效果表。
input()
c.look_match_colors(66) # 展示随机配色,默认100例,可以自行设定。展示66例。

上一版本的两个表截屏图片
在这里插入图片描述
在这里插入图片描述


回页首

工具使用演示

color = c.set_color # 方法取别名。
s = 'carmine adj.暗红色的'

print(f"\n{color(s, 'black', 'b_white', 's_bright')}")
print(f"\n{color(s, 31, 104, 's_dim')}")
print(f"\n{color(s, 34, 47, 2)}")

print(f"\n{color(s, 'b_white', 'red', 's_dim')}")

input(' wait a memet ... '.center(50, '~'))

输出效果截屏图片
在这里插入图片描述
在这里插入图片描述

  通过代码试炼,这次升级迭代,还算是达到了“想要的样子”。“red”+“s_dim”,还可以出来暗红色carmine。😜要是能直接“carmine”岂不是更妙。😋😋


回页首

  当英文单词参数拼写错误的时候,会提示错误并打印展示所有合法的单词参数形式,任意键后原样输出字符串。如“rod”、“b_whites”(red, s_white)单词拼写错误:

print(f"\n{color(s, 'b_white', 'rod', 's_dim')}")
print(f"\n{color(s, 'b_whites', 'red', 's_dim')}")

错误提示信息截屏图片(跳过图片)
在这里插入图片描述


回页首

  又有想法:就在快写好这篇笔记的时候,想到
要是用“carmine”为参数,就可以设定最后一条语句的(‘red’, s_dim’)的暗红色。这样岂不妙哉!🤗🤗应该能实现吧,我空了再“try and ryt”。


回页首

mypycolor完整源码(源码较长,点此跳过源码)

#!/sur/bin/nve python
# coding: utf-8

'''

filename: mypycolor.py

author: 梦幻精灵_cq

time: 2022-10-01

'''


class Color:
    '''\n    此次更新,缘于上次对原“函数”结构的Color工具的不满:重新用Python类打造后,简洁倒是不错,但在易用性上不敌原版。这次在原基础上更新,上次用类重建的代码基本没作更改虽然发现一些可以优化的地方(谁让我很懒哩🤪)。这次升级迭代后,让我的Color无惧色彩控制编码和英文单词字符串作为颜色设置参数,可以单用也可以混用,依然可以无视顺序。\n    这样子,既可以满足对数字控制码独衷的进行简略代码设置,又能适用对数字“吃力”而热衷英文单词描述的方便书写✍代码。\n(2022-10-01)\n    将字符串嵌入控制码“\\033[34;43;6m'string'\\033[0m”控制字符串print()颜色输出。\n    您可以用Color().show()方法查看 “控制码 -> 显示效果”对应表;可以用Color().look(int_number)方法查看您“指定”数量的随机控制码组合效果。\n    show和look方法,都首先调用了__clear()清屏方法,如果两个方法紧挨调用,不设置暂停,将只可以看到后一方法输出(前一方法输出显示被后一方法清屏)。\n    可以用Color().set_color()方法返回嵌入控制码组合的字符串。\n    还可以用Color().random_effect()方法,返回随机控制码组合,用set_color方法配合,进行随机效果打印。\n    特殊效果控制码“0”,关闭于她之前设置,控制码组合以她结束,就等于没有设置效果;在前面或中间就只有她后面控制码组合的效果。\n    在使用中需谨记。'''
    __Version = '当前版本:V 1.0.2\n\nCopyright Dream elf 2022.\n\nQQ: 479469838\n\nCSDN个人主页:\nhttps://blog.csdn.net/m0_57158496/'


    def __init__(self):
        ''' 自动动执行魔术方法。'''
        self.__color_dict = self.__create_dict() # 创建Color内的全局变量,颜色描述单词对应色彩控制码的字典。


    def version(self):
        ''' 展示版本号。'''
        color = self.set_color
        version_s = '\n'.join((f"{'':^10}{i}" for i in self.__Version.split('\n')))
        line = color('~'*50, 'green', 2)
        input(f"\n\n{line}\n{version_s}\n{line}\n") 


    def set_color(self, string, *set_colors):
        ''' 字符串设置打印颜色效果:\n返回嵌入“色彩控制码”的字符串。\nstring,需设定颜色的字符串。\n*set_colors,用元组收集控制码、英文单词组合(任意组合,要可以是纯控制码或者纯颜色描述单词,亦或是二者混合的组合。)。\n前景色、背景色和特殊效果任意组合,参数用英文状态逗号分隔,位置没分先后。前景色直接英文单词,背景色在单词前加“b_”前缀,特殊效果样式在单词前加“s_”前缀。\n(目录前收录共计35个基词:black red green yellow blue magenta cyan white dark inky atramentous flammulated grassy xanthic blove cerulean purple violescent violaceous albicans gray off_all bright dim incline inclined underline emphasize overstriking inverse blanking strickout normal blank nothing)'''

        colors = [] # 设置单词转换成控制码的列表初值。
        for color in set_colors:
            if str(color).isdigit():
                colors.append(color) # 参数本为控制码,不用转换。
            else:
                if self.__isword(color):
                    colors.append(int(self.__color_dict.get(color))) # 参数为合法颜色描述单词,从color dict中读取相应的控制码。
                else:
                    return string # 如颜色描述单词不在color dict,即为非法,直接返回原字符串。

        if self.__isnum(colors):
            return f"\033[{';'.join(map(str, colors))};m{string}\033[0m" # 调用方法判定错误控制码参数,参数无误,返回嵌入控制码组合的字符串。
        else:
            return string # 控制码组合非法,返回原字符串。


    def show_color_words(self):
        ''' 展示当前版本Color收录的颜色描述单词。 '''
        en_s = 'black red green yellow blue magenta cyan white dark inky atramentous flammulated grassy xanthic blove cerulean purple violescent violaceous albicans gray off_all bright dim incline inclined underline emphasize overstriking inverse blanking strickout normal blank nothing'.split()
        ch_s = '黑色的 红色的 绿色的 黄色的 蓝色的 洋红色的;紫红色的 青色 白色的 深色的 黑色的 黑色的 红色的 草绿色的 黄色的 蓝色 天蓝色的 紫色的 带紫罗兰色的 紫罗兰色的 白色的 灰色的 关闭所效果 明亮的 昏暗的 (使)倾斜 倾斜的 下划线 强调 (字体)加粗 反白 消隐 删除线 正常的 空白的 无'.split()
        color = self.set_color # set_color方法取别名。
        dict = self.__color_dict # 给全局变量字典取“小名”。
        self.__clear() # 调用方法清屏。
        print(f"\n{color(' mypycolor颜色描述单词列表 '.center(42,'~'), 93, 5)}\n\n{color('~'*50, 32, 5)}")       

        k = 0 # for循环打印颜色描述单词,经过多次try,终于借助if打印成我“想要的样子”。
        for i,j in zip(en_s, ch_s):
            if k > 20:
                i2 = i
                i = f"s_{i}"
            if k == 8 or k == 21:
                print(color('-'*50,2))
            if k > 20:
                i2 = f"  {i2:<13}"
            else:
                i2 = f"  {i:<13}"
            j = f"  {j}  "
            if k in (0, 9, 10):
                print(f"{(k := k+1):>6}. {color(i2, 34, 4)}{color(j, int(dict.get(i)), 4)}(黑色的)")
            elif k == 8:
                print(f"{(k := k+1):>6}. {color(i2, 34, 4)}{color(j, int(dict.get(i)), 4)}(深色的)")
            elif k == 30:
                print(f"{(k := k+1):>6}. {color(i2, 34, 4)}{color(j, int(dict.get(i)), 4)}(消隐)")
            else:
                print(f"{(k := k+1):>6}. {color(i2, 34, 4)}{color(j, int(dict.get(i)), 4)}")

        print(f"\n{color('~'*50, 32, 5)}\n") # 打印分割线。


    def show_color_names(self):
        ''' 打印mypycolor颜色和效果描述单词的参数形式既打印显示效果 '''
        self.__clear() # 调用方法清屏。
        color = self.set_color # 颜色设置方法取别名。
        line = ('-'*46).center(50) # 设置分割线样式。
        tip = color('(注:黑色的、深色的,在黑色的背景上不可见。)'.center(29), 2)
        print(f"\n{color(' mypycolor颜色设置单词详表 '.center(42,'~'), 93, 5)}\n\n{color('~'*50, 32, 5)}")       
        print(f"{color(line, 2)}\n{tip}\n{color(line, 2)}\n{'英文名称':^19}{color('|', 2)}{'':^3} 效 果 {'':^3}{color('|', 2)}{'控制码':^6}\n{color(line, 2)}")

        for k,v in self.__color_dict.items(): # 遍历字典打印颜色设置单词。
            k,v = f"{k:<14}", f"{v:>3}"
            print(f"{'':^6}{color(k, 34, 5)}{'':^3}{color('|', 2)}{'':^3}{color(' 效 果 ', int(v))}{'':^3}{color('|', 2)}{'':^3}{color(v, 92, 2)}\n{color(line, 2)}")

        print(f"{color(tip, 2)}\n{color(line, 2)}\n{color('~'*50, 32, 5)}\n")


    def __create_dict(self):
        ''' 创建颜色名称字典color dict。'''
        color_names = 'black red green yellow blue magenta cyan white'.split()
        back_color_names = [f"b_{i}" for i in color_names]
        fore_colors = dict(zip(color_names, (f"3{i}" for i in range(8))))
        light_fore_colors = dict(zip((f"l_{i}" for i in color_names), (f"9{i}" for i in range(8))))
        other_fore_colors = dict(zip((f"{i}" for i in 'dark inky atramentous flammulated grassy xanthic blove cerulean purple violescent violaceous albicans gray'.split()), (30, 30, 30, 31, 32, 33, 34, 34, 35, 35, 35, 37, 90)))
 
        back_colors = dict(zip(back_color_names, (f"4{i}" for i in range(8))))
        light_back_colors = dict(zip((f"l{i}" for i in back_color_names), (f"10{i}" for i in range(8))))
        other_back_colors = dict(zip((f"b_{i}" for i in 'dark  inky atramentous flammulated grassy xanthic blove cerulean purple violescent violaceous  albicans gray'.split()), (40, 40, 40, 41, 42, 43, 44, 44, 45, 45, 45, 47, 100)))
        
        style = dict(zip((f"s_{i}" for i in 'off_all bright dim incline inclined underline emphasize overstriking inverse blanking strickout normal blank nothing'.split()),(0, 1, 2, 3, 3, 4, 5, 5, 7, 8, 9, 22, 22, 22)))
        # 用Python新版本字典+运算符“|”依次联接前景、背景和特殊效果样式字典。
        return fore_colors | light_fore_colors | other_fore_colors | back_colors | light_back_colors | other_back_colors | style


    def __isword(self, word):
        ''' 判定色彩英文单词合法性。'''
        color = self.set_color # 颜色设置方法别名。

        if word not in self.__color_dict.keys():
            tip = f' “{word}”颜色设置单词错误!'.center(41, '~')
            tip2 = ' 已收录可用于颜色设置的单词 '.center(37, '-')
            print(f"\n{color(tip, 91, 5)}\n\n{color(tip2, 34, 2)}\n{color('-'*50, 2)}\n")
            for index,word in enumerate(self.__color_dict.keys()):
                index_s = f"{index+1}. " # 设置单词序号打印样式。
                if (index+1)%10 == 0: # 每打印10个单词换行。
                    print(f"{color(index_s, 2)}{color(word, 'blue')}")
                else:
                    print(f"{color(index_s, 2)}{color(word, 'blue')}", end=' ')
            input(f"\n{color('-'*50, 2)}\n{color(tip2, 34, 2)}\n\n{color(tip, 91, 5)}")
            return False # 颜色设置单词非法,打印错误提示并展示全部合法单词。
        else:
            return word # 颜色设置单词合法,返回单词。


    def __random_effect(self):
        ''' 返回嵌入“效果随机”的色彩控制码。'''
        from random import choice # 加载随机数模块随机选择方法。
        # 列表解析“特殊效果样式”控制码。
        effects = [i for i in range(1, 9) if i not in (6, 8)]+list(e90 := range(90, 98))+list(e100 := range(100, 108)) # 此条语句使用了海象运算符“ := ”在引用中给变量赋值,在python 3x以下版本将报错。如在3x以下版本run,请修改本条语句。

        while True:
            x, y, z = nums = [choice(range(30, 38)), choice(range(40, 48)), choice(effects)] # 随机选择前景、背景和特殊效果控制码。 变量别名c,方便简洁引用。
            if x%10 == y%10: continue # 前景色、背景色相同,不计数并从此处跳转再次(下一轮)循环。
            if z in e90: nums.pop(0) # 特殊效果控制码为调节前景色饱和度,前景色设置将被特殊效果控制码覆盖。删除前景色控制码。
            elif z in e100: nums.pop(1) # 特殊效果控制码为调节背景色饱和度,背景色控制设置将被特殊效果控制码覆盖。删除背景色控制码。
            if self.__isnum(nums): return nums # 返回“有效组合”。


    def show_colors(self):
        ''' 展示颜色控制码与效果对应表。'''
        self.__clear() # 调用方法清屏。
        color = self.set_color # 方法别名,方便代码书写。
        print(color(' “\\033[37;40m\\033[0m”颜色控制码表 ', 32).center(53, "~"))
        print(f"{color(' (此表以Python默认的“黑底白字”显示) ', 44):^48}")

        print(f"\n{color(' 前、背景色控制码对应表 ', 32):-^48}")
        print(f"\n{'':>2}颜色{'|':^3}控制码{'':>4}效果 {'|':^9}控制码{'':>4}效果\n{'~'*48:^50}")
        for i,j in zip(range(8), '黑红绿黄蓝紫青灰'): # 循环打印前景色背景色“控制码->效果”对应表。
            print(f"{'':>3}{color(j, 37, 44, 1)}{'|':^5} 3{i}{'':>5}{color('前景色', 3*10+i)}", end='')
            print(f"{'|':^9}  4{i}{'':>5}{color('背景色', 4*10+i)}\n{'-'*48:^50}")
        print(f"{color(' (“38、39、48、49”没有颜色效果) ', 44):^50}\n{'~'*50}")

        print(f"\n{color(' 特殊效果控制码对应表 ', 32):-^50}")
        print(f"\n{'':>2}{'名称':^6}{'控制码':^8}{'特殊效果':^22}\n{'~'*46:^50}")
        effects = ('关闭','高亮', '减淡', '倾斜', '划线', '着重', '反白', '消隐', '删除')
        for i,j in zip('012345789', effects): # 循环打印九种特殊效果和控制码对应效果图。
            s = f"37;40;{i}".center(23)
            print(f"{'':>4}{color(j, 37, 44, 1)}{i:^14}{color(s, 37, 40, i):^23}\n{'-'*46:^50}")
        print(f"{color(' (“6”没有特殊效果显示) ', 44):^52}\n{'~'*50}")

        print(f"\n{color(' 前、背景色饱和度控制码对应表 ', 32):-^46}")
        print(f"\n{'':>2}颜色{'|':^3}控制码{'':>4}效果 {'|':^7}控制码{'':>4}效果\n{'~'*47:^50}")
        for i,j in zip(range(8), '灰红绿黄蓝紫青白'): # 循环打印前景色背景色“控制码->效果”对应表。
            print(f"{'':>3}{color(j, 37, 44, 1)}{'|':^5} 9{i}{'':>5}{color('前景色', 9*10+i)}", end='')
            print(f"{'|':^7}  10{i}{'':>5}{color('背景色', 10*10+i)}\n{'-'*47:^50}")
        print(f"{color(' (“98、99、108、109”没有“特殊控制”效果) ', 44):^52}\n{'~'*50}")


    def look_match_colors(self, num=100):
        ''' 展示前景色、背景色和特殊效果“随机搭配效果”,num默认100例,可自行设定。'''
        self.__clear() # 调用方法清屏。
        print(f"\n{'~'*50}\n{self.set_color(f' 随机{num}款配色样式展示 ', 2, 30, 44):^55}\n{'~'*50}\n")
        n = 1 # 本是用for循环(我更喜欢for的简练,无关有人说她更高效),为可以过滤前、背景色相同的随机组合,才改用while循环。

        while n <= num: # 循环输出设定数量的随机样式组合,默认100。
            effects = self.__random_effect() # 获取的随机控制码组合解构赋值。            
            #if len(effects) == 3:
                #x, y, z = effects
                #print(self.set_color(f"{x};{y};{z}".center(9), x, y, z), end=' ') # 打印组合效果,打印字符即为该效果控制码组合。
            #elif len(effects) == 2:
                #x, y = effects
                #print(self.set_color(f"{x};{y}".center(9), x, y), end=' ') # 打印组合效果,打印字符即为该效果控制码组合。
            print(self.set_color(';'.join(map(str, effects)).center(9), *effects), end=' ') # 前面被#注释掉的六行代码,可以用*的“爆破”能力一行搞定。不删除,是留个念想,证明“代码一般都是可以持续优化的”。
            if not n%5 or n==num: print('\n') # 打印五个效果组合后折行。
            n += 1

        print(f"\n{'~'*50}\n") # 打印完结分割线。


    def __isnum(self, nums):
        ''' 判定色彩控制码,nums为控制码组合元组。'''

        def show_tip(string, num):
            ''' 错误提示信息样式 '''
            print(f"\n{self.set_color(string, 43, 31).center(num, '~')}\n") # 错误提示函数:string, 提示字符串。num,居中显示宽度设定。

        if (n := len(nums)) == 0: # 用“海象运算符”给n赋值。
            show_tip(' 您没有设置色彩控制码!', 51)
            return
        elif n > 3:
            show_tip(f"“{', '.join([str(i) for i in nums])}”,您给出的设置太多!", 52)
            return

        for i in nums:
            n = len(str(i))

            if n > 3:
                show_tip(f"“{i}”,参数设置错误!", 54)
                return
            elif n == 1: # 控制码一位,
                if i == 6: # 6 没有特殊效果。
                    show_tip(f"“{i}”,没有特殊效果!", 54)
                    return
            elif n == 2: # 控制码2位,仅十位3、4、9有效,个位8、9没有显示效果。
                if i//10 not in (2, 3, 4, 9):
                    show_tip(f"“{i}”,颜色设置错误!", 54)
                    return
                if i%10 in (8, 9) or i%10!=2 and i//10==2:
                    show_tip(f"“{i}”,没有颜色效果!", 54)
                    return
            elif n == 3: # 控制码3位,仅十位10有效,个位8、9没有显示效果。
                if i//10 not in (10,):
                    show_tip(f"“{i}”,特殊效果“背景饱和度”设置错误!", 47)
                    return
                if i%100 in (8, 9):
                    show_tip(f"“{i}”,没有颜色效果!", 54)
                    return

        return True


    def __clear(self):
        ''' 清屏。'''
        print('\033[2;J') # 清除一屏,是用转义字符串,“无视”编程语言和操作系统,只需用“打印”语句输出到终端即可清除一屏。os.system('clear'),是清除终端所有,但依赖操作系统,在不同的系统命令字符串不同。


    def readme(self):
        ''' 展示自述文本。'''
        color = self.set_color
        try:
            print(f"\n\n{color(' color工具“自述文档”', 32):~^53}\n{self.set_color(' (分段显示,任意键继续) ', 2):^48}\n\n")

            with open('mycolor_readme.txt') as f:

                s = True
                while s:
                    s = f.readline() # 读取行。
                    if s == '\n':
                        print(color(' '*50, 'b_white'))
                    else:
                        input(color(s, 34, 'b_white', 4)) # 有色分段打印readme.txt文本内容。
        
            print('-'*50) # 打印分割线。
        except Exception as error:
            input(f"{color(' 自述文件读取错误!'.center(41, '~'), 'red', 5)}\n{color('错误类型:', 's_dim')}{color(error, 's_dim', 'blue')}")
            return 


if __name__ == '__main__':
    clear = '\033[2J' # 清屏字符串。
    my = Color() # 实例类。
    color = my.set_color # 别名,简洁代码调用。
    line = color('~'*50, 'green', 2)
    print(f"{clear}\n{'':>16}{color(' Hello, How are you? ', 45, 'white', 5)}\n\n{color(' 我是颜色打印控制工具mypycolor ', 's_bright', 32).center(50, '~')}")
    print(f"\n{line}\n{color('mypycolor工具包含的方法:', 'green')}\n\n{color(', '.join((name for name in dir(my) if '__' not in name)), 'blue')}")
    my.version() # 展示版本号。
    print(f"{color(my.__doc__, 'blue', 'b_white', 4)}\n\n{'~'*50}\n\n")


回页首

__上一篇:__ 奇妙的“黑板擦”字符串如

__下一篇:__ 

我的HOT博:
    评论 2
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    梦幻精灵_cq

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值