Python(2):基础数据类型

Python语言整体的数据类型分为三块:数值类型,字节类型,组合类型。

  • 数值类型:整型,浮点型,布尔型,复数型。
  • 字节类型:字符串。
  • 组合类型:列表,元组,集合,字典。

如果按值是否可以更改,并且更改后物理地址是否发生改变,又分为可变类型和不可变类型。

  • 可变类型:列表,字典,集合
  • 不可变类型:数值,字符串,元组

一、数值类型:数值-Number

1.数值类型的介绍及其相互转化

4种数值类型概述如下表:

名称英文标识解释举例
整型int通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。5,6
浮点型float浮点型由整数部分与小数部分组成。5.22222
布尔型bool含义True和False,True转换为1,False转换为0,但是反之除 0为False类型,其他数字为True类型True、False
复数型complex形如a+bi(a为复数实部,b为复数虚部)1+2i

并且这些数字类型之间可以进行相互转换:

在这里插入图片描述

注意:
1.在数字类型中,0或者0.0转换为bool类型为False , 其他为True;
2.而True转为int类型为1,False转换为int为0;
3.这四种数值类型的复杂度:bool<int<float<complex;

2.数字类型之间的数学运算

既然是数字类型,那么就可以进行一些数学运算,例如:a=20,b=10

在这里插入图片描述
3.数字间的进制转换

数字有多种进制表现,常见的就是二进制、八进制、十进制、十六进制。在计算中表现形式是这样:

进制表示
二进制0b表示, 用0,1 表示
八进制0o表示, 用0-7 表示
十六进制0x表示, 用0-9和A-F 表示

如果进制之间使用代码相互转化

a进制转换为b进制函数
整数转换为二进制bin(整数)
整数转换为八进制oct(整数)
整数转换为十六进制hex(整数)
其他进制转换为十进制int(其他进制字符串,进制数)

试一下:

在这里插入图片描述


二、字节类型:字符串-String

字符串在 Python中的表现形式为单/双/三引号的形式:

在这里插入图片描述

接下来了解下字符串的一些使用。

1.字符串的运算

# -----------------------------------------拼接
a = '123'
b = '456'
print(a + b)  # 123456

# ------------------------------------------重复
c = '123'
print(c * 3)  # 123123123

# -----------------------------------------分配
c, d = '12'
print(c, d)  # 1 2

# -----------------------------------------分配,部分打散
a, *b = '12345'  # *此处具有打散功能,打散为列表
print(a, b)  # 1 ['2', '3', '4', '5']


2.字符串的切片

如果一个字符串我们想取其中的几个字符,那么就可以通过切片的方式获取

a = '123abcd'

print(a[0: 5])  # ---------------------------123ab
print(a[:4])  # ----------------- 123a
print(a[1:])  # -------------- 23abcd
print(a[:])  # 等同于直接输出a
print(a[::3])  # -------------- 1ad
print(a[3::3])  # ---------------ad
print(a[:4:3])  # ------------------------------- 1a
print(a[3:0:-1])  # -------------------a,3,2,使用步长-1,注意起始位置
print(a[::-1])  # ---------------------倒序dcba321
print(a[-1:-5:-2])  # ------------------------db

a = '123456789'
print(a[-8:5])  # -----------------------2345
print(a[0:-5])  # -------------------1234
print(a[-5:-1:1])  # -------------------------5678
print(a[-1:-5:-1])  # ----------------------------9876

3.字符串的常见函数

序号方法及描述
1capitalize() 将字符串的第一个字符转换为大写
2center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4bytes.decode(encoding=“utf-8”, errors=“strict”) Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5encode(encoding=‘UTF-8’,errors=‘strict’) 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
6endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常。
10isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11isalpha() 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
12isdigit() 如果字符串只包含数字则返回 True 否则返回 False…
13islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False
15isspace() 如果字符串中只包含空白,则返回 True,否则返回 False.
16istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False
17isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19len(string) 返回字符串长度
20[ljust(width, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21lower() 转换字符串中所有大写字符为小写.
22lstrip() 截掉字符串左边的空格或指定字符。
23maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24max(str) 返回字符串 str 中最大的字母。
25min(str) 返回字符串 str 中最小的字母。
26[replace(old, new , max]) 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
27rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
28rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始.
29[rjust(width,, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30rstrip() 删除字符串字符串末尾的空格.
31split(str=“”, num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
32[splitlines(keepends]) 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34[strip(chars]) 在字符串上执行 lstrip()和 rstrip()
35swapcase() 将字符串中大写转换为小写,小写转换为大写
36title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37translate(table, deletechars=“”) 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38upper() 转换字符串中的小写字母为大写
39zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0
40isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

4.字符串的format格式化函数

format函数在字符串经常会用于输出,使用较多。具体看一下它的灵活使用。

①输出普通参数

name = '蔡徐坤'
age = 18

# -------------按顺序
print('名字{},年龄{}'.format(name, age))  # 名字蔡徐坤,年龄18

# ------------按指定顺序
print('名字{0},{0}的年龄{1}'.format(name, name, age))  # 名字蔡徐坤,蔡徐坤的年龄18

# -------------按变量名称
print('名字{name},年龄{age}'.format(name=name, age=age))  # 名字蔡徐坤,17

# --------------f写法,和变量名称类似
print(f'名字{name},年龄{age}')  # 名字蔡徐坤,18

②格式化修饰

符号表示
后边为将于格式化的写法
5表示总字符长度为5
^^表示要居中,< 表示字体居左,>表示字体居右
&表示,填充字符,不够长度的用*号表示

举例:

a='我叫{:&^5}'.format('蔡徐坤')#^居中
b='我叫{:&<5}'.format('蔡徐坤')#<居左
c='我叫{:&>5}'.format('蔡徐坤')#>居右

print(a)#---------------------------------------我叫&蔡徐坤&
print(b)#---------------------------------------我叫蔡徐坤&&
print(c)#---------------------------------------我叫&&蔡徐坤

③输出二进制,八进制,十六进制

# ----------------------------------------------输出二进制
a = '5的二进制为{:b}'.format(5)  # 二进制用b
print(a)  # ---------------5的二进制为101

# --------------------------------------------------输出八进制
b = '20的八进制为{:o}'.format(20)  # 八进制用o
print(b)  # 20的八进制为24

# -------------------------------------------------输出十六进制
c = '34的十六进制为{:x}'.format(34)  # 十六进制用x
print(c)  # 34的十六进制为22

④符串格式化和百分号

name,age,height='张三',18,1.75

print('我叫%s,年龄%d,身高%.2f'%(name,age,height))  # %.2f代表保留小数点后两位
# 我叫张三,年龄18,身高1.75


print('%.2f%%'%(0.23)) # %%为数学中的一个%-----------------0.23%

符号大全:
在这里插入图片描述


三、组合类型 :列表-List

列表是一个有序的序列,在python中创建的几种方式

a = [1, 2, 3]  # 普通列表
b = []  # 空列表
c = list()  # 空列表
d = [1, 2, 'adadd', True, [123]]  # 复杂列表

1.列表的常见函数

序号方法说明
1list.append(obj)在列表末尾添加新的对象
2list.count(obj)统计某个元素在列表中出现的次数
3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)将对象插入列表
6list.pop(index)值为索引,移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)值为删除值,移除列表中某个值的第一个匹配项
8list.reverse()反向列表中元素
9list.sort(cmp=None, key=None, reverse=False)对原列表进行排序,无返回值(sorted函数是Python的函数,有返回值),reverse默认为False升序

2.列表的一些函数使用

①获取列表某几项:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 正索引获取一项
print(a[0])  # 1
print(a[3])  # 4

# 负索引获取一项
print(a[-1])  # 9
print(a[-3])  # 7

# 正索引获取多项
print(a[1:5])  # [2, 3, 4, 5]

# 负索引获取多项
print(a[-5:-1])  # [5, 6, 7, 8]

②列表的遍历与长度

a = [1, 3, 4]
print('a列表的长度为:', len(a))  # 3

# ---------普通循环使用range方法
for i in range(len(a)):
    print("当前索引为{},是列表的第{}个元素,值为{}".format(i, i + 1, a[i]))

"""
当前索引为0,是列表的第1个元素,值为1
当前索引为1,是列表的第2个元素,值为3
当前索引为2,是列表的第3个元素,值为4
"""

# -----------------直接循环列表
for i in a:
    print(i)
"""
1
3
4
"""

# ----------------带索引的循环
for index, i in enumerate(a):
    print("当前索引为{},是列表的第{}个元素,值为{}".format(index, i + 1, i))

"""
当前索引为0,是列表的第2个元素,值为1
当前索引为1,是列表的第4个元素,值为3
当前索引为2,是列表的第5个元素,值为4
"""

③列表的拼接,重复

a = [1, ]
b = [2, 3]
print(a + b)  # [1,2,3]
print(a * 3)  # [1,1,1]
print(a[0] + b[0])  # 3

④列表的添加【append,extend,insert】

方法名使用方式
append()在列表末尾添加一个元素, 格式: m.append(元素A)
extend()对于特定列表的扩展和增长,可以一次添加多个元素,不过也只能添加在列表的最后;格式:m.extend([A,B,…])
insert()在列表的特定位置插入想要添加的特定元素,这里的特定位置是指元素所在列表中的索引 格式: m.insert(A,元素B):表示在列表m的索引A位置变为元素B,其他元素顺序后移
a = [1, 2, 3, 4, 5,]
a.append(7)#在尾部追加一个
print(a)   # [1,2,3,4,5,7]

b=['a','b']
a.extend(b)#extend可以将另一个列表插入
print(a)  # [1,2,3,4,5,7,'a','b']

a.insert(1,'x')#在索引一的位置加个’x'
print(a)  [1,'x',2,3,4,5,7,'a','b']

⑤列表的删除【pop,del,remove】

  • pop()可以添加索引,不添加默认弹出最后一个数
  • remove必须传入要删的数,删除从左到右的第一个数
  • del 内置方法
a = [1, 2, 3, 4, 5,]
a.pop()#会删除最后一个数,并且输出删除的这个元素
a.pop(2)#会删除索引为2的数,并且输出删除的这个元素

a = [1, 2, 3, 4, 5,]
a.remove(3)#删除的是第一个遇到的3,并非索引位置
print(a)

a = [1, 2, 3, 4, 5,]
del a[2]#删除对应索引或者整个列表
print(a)

⑥列表的修改,直接复制

a = [1, 2, 3, 4, 5,]
a[2]='xx' # 直接将对应索引更改为自己修改的值即可
print(a)   # [1,2,'xx',4,5]

3.列表函数操作的时间复杂度

在这里插入图片描述
关于列表各个函数操作的时间复杂度,见该文章:列表各个函数的操作复杂度

4.深拷贝和浅拷贝

  • 深拷贝:完全复制一份到新的物理地址,互相修改不受影响
  • 浅拷贝:粗略复制,只复制外层地址,对于内部的可变类型,互相修改还会变化,因为内部的可变类型还是同一块内存地址
    在这里插入图片描述
import copy

a=[1,2,3,[4,5],6]
b=a
c=copy.copy(a)#浅拷贝,将列表粗略考走,列表内部的列表会随着a中内部的列表变化,即内部列表还指向【4,5】
d=copy.deepcopy(a)#深拷贝,完全复制一份a,创立了一块新的地址,互相修改不会变化
a.append('00000')
a[3].append('x')
print(a,id(a))
print(b,id(b))
print(c,id(c))
print(d,id(d))

结果:
在这里插入图片描述


四、组合类型 :元组-Tuple

创建元组的方法:

a = (1, 2, 3)  # 普通元组
b = 1, 2, 3, 4  # 普通元组
c = (1,)  # 创建只有一个元素的元组,必须加逗号
d = 1,  # 创建只有一个元素的元组,必须加逗号
e = (1, 2, (3, 4), 'sqsa', [123])  # 复杂元组
f = tuple()  # 空元组
g = ()  # 空元组
print(type(b))  # <class 'tuple'>

元组和列表之间也可以进行相互转化,示例如下:

a = [1, 2, 3]
b = tuple(a)
print(b)  # (1, 2, 3)

c = list(b)
print(c)  # [1, 2, 3]

关于元组的循环遍历和求长度,与列表相同,这里不展开讲。

1.元组元素的改变

元组虽然是不可变类型,但是如果元组的元素中有可变类型,还是可以改变其中的值的。例如:

在这里插入图片描述

2.元组的拼接和重复

元组是不可变类型,此时的拼接和重复出的结果是新的返回值
在这里插入图片描述


五、组合类型:字典-Dict

字典是一个无序可可变序列,在内部由若干个key-value键值对组成,这样创建:

a = {'name': '张三', 'age': 15}  # 普通字典
b = {'name_list': ['12334'], "xxx": 4646}  # 复杂字典
c = {}  # 空字典
d = dict()  # 空字典

另外需要注意:

  • 字典的key值必须是不可变类型
  • 同一字典有两个相同的key,会保留后一个key的数据

我们还是从字典的一些使用来讲解

1.字典的增删改查

①增加和修改

添加方式注意
dic1[key]=new_value没有则为新增,有了则为覆盖
setdeafult()只能添加新的值
update()合并两个字典,将函数值的字典中的key-value键值对中没有key的值添加,有则覆盖后边的值

简单使用:

# -----------------------------dic1[xx]=yy
dic1 = {'name': '蔡徐坤', 'age': 18}
dic1['sex'] = '男'
print(dic1)  # {'name': '蔡徐坤', 'age': 18, 'sex': '男'}
dic1['name'] = 'sssss'
print(dic1)  # {'name': 'sssss', 'age': 18, 'sex': '男'}

# ------------------------------setdeafult(),key存在,不可修改,key不存在,可以修改
dic1 = {'name': '蔡徐坤', 'age': 18}
dic1.setdefault('name', '彪子')
print(dic1)  # {'name': '蔡徐坤', 'age': 18}

dic1.setdefault('location', '北京')
print(dic1)  # {'name': '蔡徐坤', 'age': 18, 'location': '北京'}

# ---------------------------update()
a = {'name': 111, 'age': 123}
b = {'name': 222, 'xxx': 121312}
a.update(b)
print(a)  # {'name': 222, 'age': 123, 'xxx': 121312}

②删除

方法注意
clear()清空列表
del可以删除指定数据,也可以删除整个字典
popitem()随机弹出一个,储存为元组,删除原来字典中的一个
pop()字典是无序的,所以必须写key

简单使用:

# ---------------------------------------clear()
dic1 = {'name': '蔡徐坤', 'age': 18}
dic1.clear()
print(dic1)  # {}

# ------------------------------------- pop()
dic1 = {'name': '蔡徐坤', 'age': 18}
dic1.pop('name')
print(dic1)  # {'age': 18}

# ------------------------------------- popitem()
dic1 = {'name': '蔡徐坤', 'age': 18}
dic1.popitem()
print(dic1)  # {'name': '蔡徐坤'}

# ----------------------------------del
dic1 = {'name': '蔡徐坤', 'age': 18}
del dic1['name']
print(dic1) # {'age': 18}

dic1 = {'name': '蔡徐坤', 'age': 18}
del dic1
print(dic1) # 因为已经删除,故没有该变量显示未定义,NameError: name 'dic1' is not defined

③查询-取单个的值

取单个值

方式解释
dic1[key]直接用键名查找
dic1.get(key)存在则返回value值,不存在该键值默认返回None,当然该值可以自己设置

简单使用:

dic1 = {'name': '蔡徐坤', 'age': 18}
print(dic1['name'])  # 蔡徐坤
print(dic1.get('name'))  # 蔡徐坤
print(dic1.get('sex'))  # None
print(dic1.get('sex', '没有sex,返回我自己定义的话'))  # 没有sex,返回我自己定义的话

④循环迭代

提取函数
提取keykeys(),储存为列表形式
提取valuevalues(),储存为列表形式
提取key和valueitems(),储存为列表套元组形式

简单使用:

# ---------------------------------------keys()
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.keys())
for k in dic.keys():
    print(k)

"""
dict_keys(['a', 'b', 'c'])
a
b
c
"""
# ----------------------------------------values()
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.values())
for v in dic.values():
    print(v)

"""
dict_values([1, 2, 3])
1
2
3
"""

# --------------------------------------------items()
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.items())
for k, v in dic.items():
    print(k, v)

"""
dict_items([('a', 1), ('b', 2), ('c', 3)])
a 1
b 2
c 3
"""

2.判断字典

dic = {'a': 1, 'b': 2, 'c': 3}
if 'a' in dic:
    print('a在字典dic中')
if 'd' not in dic:
    print('d不在字典dic中')
if 'a' in dic.keys():
    print('a在字典dic中')

3.字典的时间复杂度

在这里插入图片描述
注意

  • 字典查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
  • 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。不允许同一个键出现两次。键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样。

六、组合类型:集合-Set

集合是一个不可重复的,无序的,不可改变的序列,值中不可以出现不可哈希的值。创建集合如下:

a = {1, 2, 3, 4}  # 普通集合
b = {1, 1, 1, 1, 1, 2}  # {1,2} ,会自动去重
c = set()  # 空集合
d = {1, 2, 3, [1, 2], {'name': '张三'}} # 报错,集合中的值是要可哈希的不变值

循环遍历和列表,元组相同,这里不演示了。

1.集合的增删改查

①添加和更新

函数名作用
add()添加单个元素到集合
update()指集合和另一个序列(元组,列表,字典,集合)。添加多个元素或者更新集合,如果有重复的元素会自动去重

简单举例:

a = {1, 1, 1, 1, 1, 1, 3, 4, 2}
a.add(9)
print(a)  # {1, 2, 3, 4, 9}

s1 = {1, }
s2 = {1, 2, }
li = [1, 3]
tup = (1, 4)

s1.update(s2)
print(s1)  # {1, 2}
s1.update(li)
print(s1)  # {1, 2, 3}
s1.update(tup)
print(s1)  # {1, 2, 3, 4}
xx = {'name': 123}
s1.update(xx)
print(s1)  # {1, 2, 3, 4, 'name'} ,只更新字典的key值

②删除

函数名作用
pop()随机弹出一个元素,并返回这个元素
remove()删除指定值
clear()集合的清空
del删除集合

举例:

a = {2, 1, 3, 4}
b = a.pop()  # pop()随机删除一个
print(b, a)  # 1 {2, 3, 4}

a.remove(3)  # remove删除写的值
print(a)  # {2, 4}

a.clear()  # 清空集合
print(a)  # set()

del a  # 删除集合

2.其他序列和集合的相互转化

对于列表/元组/字典转换为集合,会直接去重变为集合。而字典转换为集合,只针对key值

b = {'1': 'a', '2': 'b'}
a = set(b) # 会把字典的key存到集合
print(a) # {'2','1'}

3.集合的运算(交集,并集,补集,差集)

1、交集intersection()或者&

a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)
print(a.intersection(b))

结果:
在这里插入图片描述
2、反交集symmetric_difference()或者^

a = {1, 2, 3}
b = {2, 3, 4}
print(a.symmetric_difference(b))
print(a ^ b)

结果:
在这里插入图片描述

3、并集union()或者|

a={1,2,3}
b={2,3,4}
print(a|b)
print(a.union(b))

结果:
在这里插入图片描述

4、差集difference或者-

a = {1, 2, 3}
b = {2, 3, 4}
print(a - b)
print(a.difference(b))

结果:
在这里插入图片描述

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张烫麻辣亮。

谢谢老板支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值