python学习笔记

文章目录

关于python

python的优点开源、易于维护可移植易于使用、简单优雅广泛的标准库、功能强大。。。。

python的缺点运行速度较慢(python是解释性语言,运行时翻译为机器码非常耗时); 代码不能加密解释性语言发布程序就是发布源代码,而c语言只需要把编译后的机器码发布出去,从机器码反推出c代码是不可能的

python的典型应用

(https://img-blog.csdnimg.cn/ba1c0d9cfa5c4bc2aebb7509f3a5c765.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjI2OTAyNzk=,size_20,color_FFFFFF,t_70,g_se,x_16)

python常用关键字:

(https://img-blog.csdnimg.cn/d6a1af44156e4d27918bb42538bf7fe8.png)

查看当前版本的所有关键字:cmd中输入以下内容
在这里插入图片描述

效果:

(https://img-blog.csdnimg.cn/47ae04831a7541c380836290a3cd5c65.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjI2OTAyNzk=,size_20,color_FFFFFF,t_70,g_se,x_16)

输入

在这里插入图片描述

格式化输入的语法
age = 18
print("my name is %s,my nationality is %s"%("小张","CHN"))
print("my age is: %d"%age)

eg.分割

在这里插入图片描述

sep="" 是设定分割的符号;

end=""是设定结束的符号,引号内可加\t \n…

查看变量的类型用
a = input("输入:")
print(type(a))
print("输入了一个数字: %s" %a)

此时输入“123”,结果显示a的类型为字符串,说明 将“123”当作字符串的类型来输入赋值给a

若要对a进行计算,就要给它进行强制类型转换

a = int("123") #强制转换为int整型
print(type(a))
b = a + 100
print(b)
c = int(input("输入:"))
print("输入了一个数字: %d" %c)

在这里插入图片描述

eg.猜拳游戏:
u=input("请输入:剪刀(0)、石头(1)、布(2):")
import random
c = random.randint(0,2)
u = int(u)#
print ("随机生成数字为%d"%c)
if u==0:
    if c==0:
        print ('draw')
    elif c==1:
        print ('win')
    elif c==2:
        print ('lose')
elif u==1:
    if c==0:
        print ('lose')
    elif c==1:
        print ('draw')
    elif c==2:
        print ('win')
elif u==2:
    if c==0:
        print ('win')
    elif c==1:
        print ('lose')
    elif c==2:
        print ('draw')

第4行的 u = int(u) 是对u进行强制型转换

运算符

设a=10;b=21

算术运算符:

在这里插入图片描述

比较运算符:
在这里插入图片描述

赋值运算符:
在这里插入图片描述

运算符的优先级:

在这里插入图片描述

判断和循环

条件判断:

import引入模块:

在这里插入图片描述

循环

for i in range(1,10,3):
    print(i)

*不仅可以循环数字,还可以循环字符串;

*输出的每个x的值的后面默认是"\n"

name="chengdu"
for x in name:
    print(x,end="\t")

输出

for循环的三种写法:

1.步进值的写法

for i in range(0,11,3):
	print(i)
	

2.从0开始的写法:

for i in range(5)
	print(i)

3.遍历的写法:

a=["aa","bb","cc","dd"]
for i in range(len(a)):
	print(i,a[i])
while循环:
i=0
while i < 5 :
	print("当前是第%d次循环"%(i+1))
	print("i=%d"%i)
	i += 1

运行结果:

在这里插入图片描述

while循环题目:输出1-100之间的数字和:
i=1
count = input("请输入一个大于1的整数:")
sum = 0
while i <= int(count) :
    sum += i
    i += 1
print("1-%d和为%d"%(int(count),sum))

输出:

while循环中的else用法:
count = 0
while count < 5 :
    print(count,"<5")
    count += 1
else:
    print(count,">=5")

输出:

在这里插入图片描述

else用在当while条件不满足时执行的语句。

其它语句:

在这里插入图片描述

简单举例continue:

i=0
while i<10:
    i+=1
    print("-"*30)
    if i==5:
        continue
    print(i)

打印一个九九乘法表:
for i in range(1,10):
    for j in range(1,i+1):
        print("%d * %d = %d"%(i,j,i*j),end="\t")
    print("\n")

输出:

在这里插入图片描述

字符串

python中的字符串可以用:单引号、双引号、三引号(三个单or三个双)

eg. ‘字符串’

​ “这是一个句子”

​ ‘’’ 这是一个段落

​ 可以由多行组成

​ ‘’’

重复符号,转义字符的用法\:

当我们要输出一个 带有单引号或其它引号的字符串、句子等 的时候,编译器会报错:

str ='I'm a student'
print(str)

在这里插入图片描述

解决这个问题只需要在第二个单引号前加上反斜杠\

str =' I\'m a student'
print(str)

输出:在这里插入图片描述

所以当觉得解释器会报错的时候,就应该在一些觉着有问题的地方加上\

常用的转义字符:

字符串的处理:
字符串的截取:

[起始位置:结束位置:步进值];

起始位置和结束位置若分别是开头和结尾的话可以省略不写;

word = "CUIT"
print(word)
print(word[0])
print(word[0:3])

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(ig-5dSyWOd9-1645249950053)(C:\Users\春\AppData\Roaming\Typora\typora-user-images\image-20220207192340564.png)]

字符串的连接

字符串的连接可以用+

word = "CUIT"
print(word+"你好")

输出:CUIT你好

有些字符串的前面加了一个“r”,就说明该字符串里面的转义字符不进行解释
字符串的常见操作:

在这里插入图片描述

在这里插入图片描述

列表——python的核心数据类型

1.类似于其它语言中的数组,但其特点是列表中的元素类型可以不相同,可以支持数字、字符串、甚至是列表(所谓嵌套)

testlist = [1,"春"]
print(type(testlist[0]))
print(type(testlist[1]))

在这里插入图片描述

2.列表写在[]之间,用逗号分隔开。

3.列表索引值以 0 为开始值, -1 为从末尾开始位置。

4.列表可以使用 + 操作符进行拼接,使用 * 表示重复。

列表的定义、使用:
namelist = [1,"春"]
for name in namelist :
    print(name)

输出:1

列表操作
1.列表增加:【append、extend、insert】

1.append:在列表末尾增加元素。

namelist = ["zhang","wang","li","zhao"]
print("----------增加前----------")
for name in namelist:
    print(name)

nametemp = input("请输入添加学生的姓名")
namelist.append(nametemp)   #在列表末尾增加元素

print("----------增加后----------")
for name in namelist:
    print(name)

输出:

在这里插入图片描述

2.extend:扩展列表的元素

a = [1,2]
b = [3,4]
a.append(b)
print(a)
a.extend(b)
print(a)

输出:

3.insert

a = [0,1,2]
a.insert(1,3)
print(a)

输出:

在这里插入图片描述

2.列表删除:【del、pop、remove】

1.del:指定位置删除

movie = [11,22,33,44]
print("----------增加前----------")
for name in movie:
    print(name)

del movie[2]

print("----------增加后----------")
for name in movie:
    print(name)

在这里插入图片描述

2.pop:弹出末尾最后一个元素。

movie = [11,22,33,44]
print("----------增加前----------")
for name in movie:
    print(name)

movie.pop()

print("----------增加后----------")
for name in movie:
    print(name)

在这里插入图片描述

3.remove:直接删除指定内容的元素。

注意:使用remove时若内容重复则删除顺序第一个指定元素。

movie = [11,22,33,44]
print("----------增加前----------")
for name in movie:
    print(name)

movie.remove(33)

print("----------增加后----------")
for name in movie:
    print(name)

在这里插入图片描述

3.列表更改:

1.直接指定下标进行修改:

namelist = [11,22,33,44]
print("----------增加前----------")
for name in namelist:
    print(name)

namelist[1] = "555"

print("----------增加后----------")
for name in namelist:
    print(name)

在这里插入图片描述

4.列表查找

1.用 if … in(或者 not in) 语句查找:

namelist = ["11","22","33","44"]
findname = input("please input name ")
if findname in namelist:
    print("you found it!")
else:
    print("you donnot found it ~ ")

在这里插入图片描述

2.index查找:可以查找指定下标范围的元素,并返回对应下标并且找不到会报错

格式:a.index(“查找元素”,起点,终点) #范围区间左闭右开

a = ["a","b","c","a","d"]
print(a.index("a",1,4))

在这里插入图片描述

3.count查找:统计元素出现次数

a = ["a","b","c","a","d"]
print(a.count("a"))

在这里插入图片描述

5.列表排序

1.reverse:列表反转

a = [1,4,2,3]
print(a)
a.reverse()
print(a)

在这里插入图片描述

2.sort:排序(升序和降序)

a = [1,4,2,3]
print(a)
a.sort()
print(a)
a.sort(reverse=True)
print(a)

在这里插入图片描述

6.列表嵌套
school = [["大学1.1","大学1.2"],["大学2.1","大学2.2"],["大学3.1","大学3.2"]]
print(school[0])
print(school[0][0])

在这里插入图片描述

练习:随机将八个老师分配到三个办公室中
import random
offices = [[],[],[]]
names = ["A","B","C","D","E","F","G","H"]
for name in names:
    index = random.randint(0,2)  #这里是左右都闭
    offices[index].append(name)
#显示-------------------------------------
i=1
for office in offices:
    print("办公室 %d 的人数为 %d "%(i,len(office)))
    i += 1
    for name in office:
        print("%s"%name,end = "\t")
    print("\n")
    print("-"*20)

输出:

在这里插入图片描述

元组(Tuple)——python的核心数据类型

1.tuple 与 list 类似,但tuple的元素不能修改。tuple 写在小括号里面,元素之间用逗号 隔开。

tup1 = (50)
tup2 = (50,)
print(type(tup1))
print(type(tup2))

在这里插入图片描述

2.tuple 的元素虽然不可修改,但可包含可变对象,如 list

3.定义一个只有单个元素的 tuple ,必须加逗号。

元组与列表的相同用法:
tup1 = ("abc","def",2000,2020,333,444,555,666)

print(tup1[0])		#访问第一个
print(tup1[-1])		#访问最后一个
print(tup1[1:5])	#切片,访问第1,2,3,4个

在这里插入图片描述

元组的增、删、改、查
增:新增元组实现增加
'''
tup1 = (12,34,56)

tup1[0] = 100
'''
#直接修改是不型的
tup1 = (12,34,56)
tup2 = ("abc","xyz")
tup = tup1 + tup2       #表面是增加元素,其实是新增了一个元组
print(tup)

在这里插入图片描述

删:只能删除整个元组
tup1 = (12,34,56)
print(tup1)
del tup1        #这里的删除是把整个元组删除而不是像列表一样清空里面的元素
print("删除后:")
print(tup1) #结果会报错

在这里插入图片描述

所以 元组不能进行元素的删除,只能进行整个元组的删除

改:不允许修改,会报错
查:即直接访问的方式,同上如下:
tup1 = (12,34,56)
print(tup1)
del tup1        #这里的删除是把整个元组删除而不是像列表一样清空里面的元素
print("删除后:")
print(tup1) #结果会报错
元组的常用操作:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

字典(dict)

1.字典是无序的对象集合,使用键-值( key-value )存储,具有极快的查找速度

2.键(key)必须使用不可变类型

3.同一个字典中,键必须是**唯一**的

字典的访问

#字典的定义:
info = {"name":"吴彦祖","age":18}

#字典的访问
print(info["name"])
print(info["age"])

#访问不存在的键:
print(info["张少春"])

在这里插入图片描述

print(info.get("张少春"))


#使用 get 访问,没有找到则会返回一个 None

小总结:

#字典的定义:
info = {"name":"吴彦祖","age":18}

#字典的访问
print(info["name"])
print(info["age"])

#直接访问不存在的键会报错,但当我们要访问多个元素,其中有些在字典中存在,有些不存在,那么我们可以给没有的那些一个默认值
print(info.get("张少春"))
#使用 get 访问,没有找到则会返回一个 None
#直接访问会报错,但当我们要访问多个元素,其中有些在字典中存在,有些不存在,那么我们可以给没有的那些一个默认值:”没找到“
print(info.get("张少春","没找到"))

在这里插入图片描述

字典的增:
info = {"name":"吴彦祖","age":18}
newID = input("please input")
info["id"] = newID
print(info["id"])

在这里插入图片描述

字典的删除:del、clear
1.del:
info = {"name":"吴彦祖","age":18}
print("before: %s"%info["name"])

del info["name"]

print("after: %s"%info["name"])

删除指定键-值对(或字典),报错:没有找到“name”。所以用 del进行删除操作的时候 会直接将整个 键-值对(或字典) 删除。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IvdcT6py-1645249950061)(C:\Users\春\AppData\Roaming\Typora\typora-user-images\image-20220210231958058.png)]

2.clear:将字典中的 内容清空 但不删除字典。
info = {"name":"吴彦祖","age":18}
print("before: %s"%info)

info.clear()

print("after: %s"%info)

在这里插入图片描述

字典的更改:
info = {"name":"吴彦祖","age":18}

info["age"]=20
print(info["age"])

输出:20

字典的查找:
访问和遍历:
info = {"id":1,"name":"吴彦祖","age":18}
print(info.keys())  #得到所有的键(列表形式)

print(info.values())    ##得到所有的值(列表形式)

print(info.items())  #得到所有的项(列表形式),每个键值对是一个元组
#遍历所有的键值对
for key,value in info.items():
    print("key = %s ,value = %s"%(value,key))

在这里插入图片描述

枚举函数同时拿到列表中的下标和元素内容:

mylist = ["a","b","c","d"]

for i,x in enumerate(mylist):
    print(i,x)

在这里插入图片描述

字典的一些其它操作:

在这里插入图片描述

* 集合(set)

1.set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 可以理解为把字典里的键单独拿出来形成的一种数据结构。

集合可以去重:

在这里插入图片描述

常用的操作:

在这里插入图片描述

小总结:

类型是否有序是否可变类型
列表[]有(可以通过下标来访问)
元组()不可(内容、类型都不可)
字典{}无(键之间)key不可变value可(通过键的查询更改)
集合{}可(不重复)

函数

普通函数的定义和调用:

#函数的定义
def printinfo():
    print("----------------")
    print(" life is like a leaf in the wind  ")
    print("----------------")

#函数的调用

printinfo()

printinfo()

在这里插入图片描述

带参数的函数

#带参数的函数
#define
def add2num(a,b):
    c = a + b
    print(c)

#call
add2num(11,22)

输出:33

带返回值的函数

返回一个值的函数
#带返回值的函数
def add2num(a,b):
    return a+b      #通过return返回运算结果

add2num(11,22)      #这样结果没有输出任何东西
#要输出正确结果的第一种:
print(add2num(11,22))
#要输出正确结果的第二种:
result = add2num(11,22)
print(result)

在这里插入图片描述

返回多个值的函数
#返回多个值的函数
def divid(a,b):
    shang = a/b
    yushu = a%b
    return shang,yushu		#多个返回值用 , 分开

sh,yu = divid(5,2)
print("商:%d,余数:%d"%(sh,yu))

在这里插入图片描述

练习

1.打印一条横线的函数:
def line():
    print("----------")

line()

在这里插入图片描述

2.写一个函数,可以通过输入的参数,打印出自定义行数的横线。(调用上一题的函数)

方法一:用for循环

n = input("please input number")
def line():
    print("----------")
i=0
for i in range(0,int(n)):
    line()

在这里插入图片描述

方法二:函数调用函数:

#打印一条横线的函数
n = input("please input")
def line():
    print("----------")
def numline(num):
    i = 0
    while i<num:
        line()
        i += 1
numline(int(n))

在这里插入图片描述

3.利用函数求三个数的和
#求三个数的和
def sum3(a,b,c):
    return a+b+c
print(sum3(1,2,3))

输出:6

4.求三个数平均值
#求三个数的和
def sum3(a,b,c):
    return a+b+c
print(sum3(1,2,3))

#求三个数平均值
def aver3(a,b,c):
    sum=sum3(1,2,3)
    aver=sum/3
    return aver
print("average = %d"%aver3(1,2,3))

在这里插入图片描述

局部变量和全局变量

#全局变量和局部变量
#局部
'''
def test1():
    a=300       #局部变量
    print("test1----------修改前:a = %d"%a)
    a=100
    print("test1----------修改后:a = %d"%a)

def test2():
    a=500       #也是局部变量,不同函数可以定义相同的名字,彼此无关
    print("test2----------a = %d" % a)
test1()
test2()
'''

#全局:整个文档到处都可以访问
'''
a=100       #全局变量

def test1():

    print(a)

def test2():

    print(a)#调用全局变量 a 
test1()
test2()
'''
#全局变量和局部变量名字相同
a = 100

def test1():
    a=300       #局部变量
    print("test1----------修改前:a = %d"%a)
    a=200
    print("test1----------修改后:a = %d"%a)

def test2():
    print("test2----------a = %d" % a)
test1()
test2()

局部变量 :只在各自的函数中有效,且 不同函数的同名局部变量彼此无关

def test1():
    a=300       #局部变量
    print("test1----------修改前:a = %d"%a)
    a=100
    print("test1----------修改后:a = %d"%a)

def test2():
    a=500       #也是局部变量,不同函数可以定义相同的名字,彼此无关
    print("test2----------a = %d" % a)
test1()
test2()

在这里插入图片描述

全局变量: 整个文档到处都可以访问

a=100       #全局变量

def test1():

    print(a)

def test2():

    print(a)#调用全局变量 a 
test1()
test2()

输出: 100 100

全局变量与局部变量同名且共存时

局部变量优先;

若要在局部中修改全局的变量内容时应在其前加上 global :

global a
a = 100

def test1():
    a=300       #局部变量
    print("test1----------修改前:a = %d"%a)
    a=200
    print("test1----------修改后:a = %d"%a)

def test2():
    print("test2----------a = %d" % a)
test1()
test2()

在这里插入图片描述

文件操作

文件打开与关闭

文件的打开

可以使用 open 函数打开文件(若文件存在则正常打开,不存在则创建一个新文件。

f = open("text.txt","w")    #w(写入模式)若不存在则新建一个文件
访问文件的模式
访问模式说明
r以只读方式打开文件(读不到就报错),文件的指针将会放在文件的开头,这是默认模式
w打开一个文件只用于写入。若该文件已存在则将其覆盖,若不存在则新建
a打开一个文件用于追加。若该文件已存在,新的内容将会被写入到已有内容之后,若不存在,新建文件进行写入
rb以二进制格式打开一个文件用于只读,指针放在开头,这是默认模式
wb以二进制打开一个文件只用于写入,若该文件已存在则将其覆盖,若不存在则新建
ab以二进制格式打开一个文件用于追加,如果该文件已存在,新的内容将会被写到已有内容之后,若不存在,新建文件并写入
r+打开一个文件用于读写,文件指针会放在开头
w+打开一个文件用于读写,若该文件已存在则将其覆盖,若不存在则新建
写入文件内容
f = open("text.txt","w")    #w(写入模式)若不存在则新建一个文件
f.write("hello world i am here")

在这里插入图片描述

读取文件内容

1.按字符数读

f = open("text.txt","r")

content = f.read(5)	#5个字母
print(content)

content = f.read(5)
print(content)
f.close()

read函数并不是每次都从开头读取,而是从上一次刚好没读到的地方开始读取。

在这里插入图片描述

**2.按行数读:**readlines()

一次性读取全部文件为列表,每行一个字符串元素。

f = open("text.txt","r")

content = f.readlines()

print(content)
i = 1
for temp in content:
    print("%d:%s"%(i,temp))
    i+=1
f.close()

在这里插入图片描述

*文件的重命名

import os
os.rename("text.txt","text+++.txt")

*文件的删除

import os
os.remove("text.txt")

*创建文件夹

import os
os.mkdir("学习笔记")

*获取当前目录

import os
os.getcwd()

*改变默认目录

import os
os.chdir("../")

*获取目录列表

import os
os.listdir("./")

*删除文件夹

import os
os.rmdir("学习笔记")

错误与异常

异常简介

print("test1--------------------")
open("123.txt","r")
print("test2--------------------")

运行结果

在这里插入图片描述

说明:打开一个不存在的文件 123.txt 当找不到它的时候,就会给出一个FileNotFoundError类型的错误(没有123.txt这样的文件或目录)。

异常:当python检测到一个错误是,解释器就无法继续执行了,出现一些错误的提示,这就是”异常“

捕获异常

try —— except 语句

不显示except后面的错误

try:
    print("test1-------")
    open("123.txt","r")
    print("test2-------")
except IOError:
    pass

在这里插入图片描述

捕获多个异常的方法
try:
    print("test1----------")
    open("123.txt","r")     #若该文件不存在则会产生IOError错误
    print("test2----------")
    print(num)            #若num变量没有定义,会产生NameEror错误

except (IOError,NameError):
    #利用元组的方式一次性捕获多个错误

小练习:(finally的用法)

1.通过python新建一个文件:gushi.txt ,选择一首古诗写入文件中

2.另写一个函数,读取指定文件 gushi.txt ,将内容赋值到 copy.txt 中,并在控制台输出”复制完毕“。

3.提示:分别定义两个函数,完成读文件和写文件的操作。

#1.通过python新建一个文件:gushi.txt ,选择一首古诗写入文件中

#2.另写一个函数,读取指定文件 gushi.txt ,将内容赋值到 copy.txt 中,并在控制台输出”复制完毕“。

#3.提示:分别定义两个函数,完成读文件和写文件的操作。

def writefile(gushi):					#写古诗的函数
    f = open("gushi.txt","w",encoding="utf-8")
    for i in gushi:
        f.write(i)
        f.write("\n")
    f.close()
def readfile():							#复制古诗的函数
    f = open("gushi.txt","r",encoding="utf-8")
    copy1 = f.readlines()
    f.close()
    f = open("copy.txt","w",encoding="utf-8")
    for i in copy1:
        f.write(i)
        f.write("\n")
    f.close()
str = ["""								#古诗内容
      静夜思
       李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
"""
]
try:
    writefile(str)
    readfile()
except Expection as result:
    print(result)
finally:
    print("结束运行")

在这里插入图片描述

pass
[外链图片转存中...(img-gJxIfkr3-1645249950067)]

#### 捕获多个异常的方法

```python
try:
    print("test1----------")
    open("123.txt","r")     #若该文件不存在则会产生IOError错误
    print("test2----------")
    print(num)            #若num变量没有定义,会产生NameEror错误

except (IOError,NameError):
    #利用元组的方式一次性捕获多个错误

小练习:(finally的用法)

1.通过python新建一个文件:gushi.txt ,选择一首古诗写入文件中

2.另写一个函数,读取指定文件 gushi.txt ,将内容赋值到 copy.txt 中,并在控制台输出”复制完毕“。

3.提示:分别定义两个函数,完成读文件和写文件的操作。

#1.通过python新建一个文件:gushi.txt ,选择一首古诗写入文件中

#2.另写一个函数,读取指定文件 gushi.txt ,将内容赋值到 copy.txt 中,并在控制台输出”复制完毕“。

#3.提示:分别定义两个函数,完成读文件和写文件的操作。

def writefile(gushi):					#写古诗的函数
    f = open("gushi.txt","w",encoding="utf-8")
    for i in gushi:
        f.write(i)
        f.write("\n")
    f.close()
def readfile():							#复制古诗的函数
    f = open("gushi.txt","r",encoding="utf-8")
    copy1 = f.readlines()
    f.close()
    f = open("copy.txt","w",encoding="utf-8")
    for i in copy1:
        f.write(i)
        f.write("\n")
    f.close()
str = ["""								#古诗内容
      静夜思
       李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
"""
]
try:
    writefile(str)
    readfile()
except Expection as result:
    print(result)
finally:
    print("结束运行")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zsc_02

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

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

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

打赏作者

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

抵扣说明:

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

余额充值