Python基础

Python list

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = [‘physics’, ‘chemistry’, 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = [“a”, “b”, “c”, “d”]

Python 实现二叉树

二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。
https://zhuanlan.zhihu.com/p/35574577

前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
前序遍历结果:ABDECF
在这里插入图片描述
前序遍历:根结点 —> 左子树 —> 右子树

中序遍历:左子树—> 根结点 —> 右子树

后序遍历:左子树 —> 右子树 —> 根结点

层次遍历:只需按层次遍历即可

例如,求下面二叉树的各种遍历

在这里插入图片描述
前序遍历:1 2 4 5 7 8 3 6

中序遍历:4 2 7 5 8 1 3 6

后序遍历:4 7 8 5 2 6 3 1

层次遍历:1 2 3 4 5 6 7 8

Python 队列

先进先出队列(或简称队列)是一种基于先进先出(FIFO)策略的集合类型.

队列是有序数据集合,队列的特点,删除数据项是在头部,称为前端(front),增加数据在尾部,称为后端(rear)

Python提供的所有队列类型 :

先进先出队列 queue.Queue
后进先出队列 queue.LifoQueue (Queue的基础上进行的封装)
优先级队列 queue.PriorityQueue (Queue的基础上进行的封装)
双向队列 queue.deque
https://www.jianshu.com/p/7eec907827ee

deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue)。
https://juejin.im/post/5b022e456fb9a07aaf35810d

// An highlighted block
#Importing the library
from collections import deque

#Creating a Queue
queue = deque([1,5,8,9])

#Enqueuing elements to the Queue
queue.append(7) #[1,5,8,9,7]
queue.append(0) #[1,5,8,9,7,0]

#Dequeuing elements from the Queue
queue.popleft() #[5,8,9,7,0]
queue.popleft() #[8,7,9,0]

#Printing the elements of the Queue
print(queue)


```javascript
// An highlighted block
var foo = 'bar';

2019/4/24

关于python中loc和iloc方法

// An highlighted block
pandas以类似字典的方式来获取某一列的值

import pandas as pd

import numpy as np

table = pd.DataFrame(np.zeros((4,2)), index=['a','b','c','d'], columns=['left', 'right'])

print(table)

得到:在这里插入图片描述

如果我们此时需要得到table列的值

例如:table[‘left’]

即可得到:
在这里插入图片描述
如果我们对于行感兴趣,这时候有两种方法,即 iloc 和 loc 方法

loc是指location的意思,iloc中的i是指integer。这两者的区别如下:

loc works on labels in the index.
iloc works on the positions in the index (so it only takes integers)
也就是说loc是根据index来索引,

如上table定义了一个index,那么loc就根据这个index来索引对应的行。

iloc是根据行号来索引,行号从0开始,逐次加1。

例如:

print(table.iloc[0])

print(table.loc[‘a’])

########################################

collections.defaultdict()的使用

// An highlighted block
from collections import defaultdict
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set)
for k, v in s:
    d[k].add(v)
print('\n',d)
a=sorted(d.items())
print('\n',a)
--------------------- 

在这里插入图片描述
https://blog.csdn.net/yangsong95/article/details/82319675


###########################################################

python数据类型

heapq
堆的意义:最快找到最大/最小值。在堆结构中插入或删除最小(最大)元素时进行重新构造时间复杂度为O(logN),而其他方法最少为O(N)。堆在实际开发中的更倾向于算法调度而非排序。比如优先级调度时,每次取优先级最高的;时间驱动调度时,取时间最小或等待最长的等等

合并两个有序序列
https://www.cnblogs.com/gsblog/p/3369953.html

###############################
python 的set使用

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

>>x = set('spam')
>>y = set(['h','a','m'])
>>x,y
>>({'m', 's', 'p', 'a'}, {'m', 'h', 'a'})


>>x&y 交
>>{'m', 'a'}
>>x | y 并
>>{'m', 'h', 'p', 'a', 's'}
>>x-y 差
>>{'s', 'p'}


怎么去除海量列表里重复元素
>>a = [11,22,33,44,11,22]
>>b =set(a)
>>b
>>{33, 11, 44, 22}
>>c = [i for i in b]
>>c
>>[33, 11, 44, 22]

https://blog.csdn.net/business122/article/details/7541486

----2020/3/29

----字典是 Python 语言中唯一的映射类型。

----关于Python中的复数,下列说法错误的是()
正确答案: C
表是复数的语法是real + image j
实部和虚部都是浮点数
虚部必须后缀j,且必须小写
方法conjugate返回复数的共轭复数
解析:
1 虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起来构成一个复数。
2复数由实数部分和虚数部分构成
3表示虚数的语法: real+imagj
4 实数部分和虚数部分都是浮点数
5 虚数部分必须有后缀 j 或 J

----在Python2中,下列哪种函式参数定义不合法?
正确答案: C
def myfunc(*args):
def myfunc(arg1=1):
def myfunc(*args, a=1):
def myfunc(a=1, **args):
解析:
当args与位置参数和默认参数混用的情况下:(注意三者的顺序)
示例一、(三者顺序是:位置参数、默认参数、*args)
示例二、(三者顺序是:位置参数、*args、默认参数)

----2020/4/3

----下列哪个语句在Python中是非法的?
正确答案: B
x = y = z = 1
x = (y = z + 1)
x, y = y, x
x += y
解析:B y = z + 1 赋值结果不会返回值 再=x就会出错

----以下声明错误的是:
正确答案: D
dic = {}
dic = {100:200}
dic = {(1,2,3):‘test’}
dic = {[1,2,3]:‘test’}

解析:字典的键值必须是不可变类型,如数字,字符串,元组,而列表是可变类型。

----多个标志可以通过按位 OR(|) 来指定
re.M:多行匹配,影响 ^ 和 $
re.I:使匹配对大小写不敏感
分组:即用圆括号将要提取的数据包住,通过 .group()获取,一般和“|”结合使用。

----python代码如下:

foo = [1,2]
foo1 = foo
foo.append(3)

正确答案: B D
foo 值为[1,2]
foo 值为[1,2,3]
foo1 值为[1,2]
foo1 值为[1,2,3]
解析:第二行foo1 = foo,是将fool的地址赋予给fool,即foo与foo1指向内存中同一地址。
第三行当执行foo.append时,因为python中列表的值是可以变化的。所以就在原来的存放foo的内存地址改变了foo的值,由最初的[1, 2]变为[1, 2, 3]。由于foo1和foo 是指向同一地址空间的索引,所以当foo内存地址所存储的值被改变时,打印foo1时,foo1的值也变化了。

----若 a = range(100),以下哪些操作是合法的?
正确答案: A B C D
a[-3]
a[2:13]
a[::3]
a[2-3]
解析:range(100)表示从0到99共一百个数
a[-3]和a[2-3]意味着倒数第三个数和倒数第一个数 分别是97 99
a[::3] start0 end99 step3 依次是0 3 6 9一直到99 步长为3
a[2:13]从a[2]到a[12] 不包括13,前闭后开

----2020/4/15

----下列代码运行结果是?
a = map(lambda x: x**3, [1, 2, 3])
list(a)

正确答案: C
[1, 6, 9]
[1, 12, 27]
[1, 8, 27]
(1, 6, 9)
解析:map()接收两个参数,一个是功能函数f,一个list,并将f依次作用在list的每个元素上,并返回一个新的list,a**b是求a的b次方。

----Python中,打开文件语法为

text = oepn(filePath, 操作方式,编码方式)
常见操作方式
‘r’:读
‘w’:写
‘a’:追加
常见编码方式
utf-8
gbk

----下列程序打印结果为( )
nl = [1,2,5,3,5]

nl.append(4)
nl.insert(0,7)
nl.sort()

print nl
正确答案: A
[1, 2, 3, 4, 5, 5, 7]
[0, 1, 2, 3, 4, 5, 5]
[1, 2, 3, 4, 5, 7]
[7, 5, 4, 3, 2, 1]
解析:append()方法是指在列表末尾增加一个数据项。extend()方法是指在列表末尾增加一个数据集合。insert()方法是指在某个特定位置前面增加一个数据项。
nl=[1,2,5,3,5];
nl.append(4)得nl=[1,2,5,3,5,4];
nl.insert(0,7)得nl=[7,1,2,5,3,5,4];
nl.sort()输出[1,2,3,4,5,5,7]

在这里插入图片描述
正确答案: D
1
2
7
10
解析:b = a: 赋值引用,a 和 b 都指向同一个对象。
list1 和 list2 指向的是同一块内存空间
list1[‘1’]=5 ------> 改变了这一块内存空间中’1’的value值
执行这一步后内存空间存储的数据变为:{‘1’: 5, ‘2’: 2}
因此 sum = list1[‘1’]+list2[‘1’]=5+5=10

----What gets printed?()
print r"\nwoow"
正确答案: C
new line then the string: woow
the text exactly like this: r"\nwoow"
the text like exactly like this: \nwoow
the letter r and then newline then the text: woow
the letter r then the text like this: nwoow
解析:Python 中字符串的前导 r 代表原始字符串标识符,该字符串中的特殊符号不会被转义,适用于正则表达式中繁杂的特殊符号表示。

----在这里插入图片描述
正确答案: A
求 AB最大公因数
求AB最小公约数
求A%B
求A/B
解析:辗转相除法,求最大公约数
a % b 是求余数
辗转相除法,又称欧几里得算法,以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。



解析:b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a) # 浅复制,**只会拷贝父对象, 不会拷贝父对象中的子对象。**所以若a的子对象变则c 变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变也不变
a.append(5) # 改变父对象
a[4].append(‘c’) #改变父对象中的 [‘a’, ‘b’]子对象

----装饰器
在这里插入图片描述
正确答案: A
foo(2) == 12
foo(3) == 12
foo(2) == 6
foo(3) == 6
解析:@修饰符
将被修饰的函数作为参数,运行修饰函数。


在这里插入图片描述
正确答案: C
1
3
4
7
none of the above
解析:当内部作用域想修改外部变量时,需要使用global声明。

----已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果 ()
正确答案: A
TRUE
FALSE
解析:id(object)是python的一个函数用于返回object的内存地址。

----下列Python语句正确的是
正确答案: D
min = x if x < y = y
max = x > y ? x : y
if (x > y) print x
while True : pass
解析:
在这里插入图片描述

----str.endswith(suffix[, start[, end]]) 用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
可选参数"start"与"end"为检索字符串的开始与结束位置。


在这里插入图片描述
正确答案: A
正在装饰 正在验证权限
正在装饰
正在验证权限
运行错误
解析:如果外层函数返回的是一个函数名的话,运行结果应该是:正在装饰
如果外层函数返回的是函数调用的话,运行结果是:正在装饰 正在验证权限

----下列表达式的值为True的是
正确答案: C
5+4j > 2-3j
3>2>2
(3,2)< (‘a’,‘b’)
’abc’ > ‘xyz’
解析:本题在 Python2 下答案选 C,在 Python3 下全部错误。


在这里插入图片描述
正确答案: A
Hello World! name value: print_func Done!
Hello World! name value: print_module Done!
Hello World! name value: main Done!
Hello World! name value: Done!
解析:在这里插入图片描述
在这里插入图片描述

----对于以下代码,描述正确的是:
list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
print list[10:]
正确答案: D
导致 IndexError
输出[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
编译错误
输出[]
解析:切片操作不会引起下标越界异常


在这里插入图片描述
正确答案: D
isinstance(b, A) == True
isinstance(b, object) == True
issubclass(B, A) == True
issubclass(b, B) == True
解析:isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
issubclass() 函数用于判断参数是否是类型参数的子类。
新式类:class 类(object基类)
继承类:class 子类(父类1[,父类2,父类3])#在继承元组中列了一个以上的类,那么它就被称作"多重继承"
class A(object):#新式类,相当于A继承object基类
pass

class B(A):#B类继承A类
pass

b = B()#实例化

-有一段python的编码程序如下:urllib.quote(line.decode(“gbk”).encode(“utf-16”)),请问经过该编码的字符串的解码顺序是( )
正确答案: D
gbk utf16 url解码
gbk url解码 utf16
url解码 gbk utf16
url解码 utf16 gbk

解析:
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk

----what gets printed? Assuming python version 2.x()
print type(1/2)

正确答案: A
<type ‘int’>
<type ‘number’>
<type ‘float’>
<type ‘double’>
<type ‘tuple’>
解析:Python2 中除法默认向下取整,因此 1/2 = 0,为整型。

----Python中函数是对象,描述正确的是?
正确答案: A B C D
函数可以赋值给一个变量
函数可以作为元素添加到集合对象中
函数可以作为参数值传递给其它函数
函数可以当做函数的返回值
解析:在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。


在这里插入图片描述
正确答案: A D
4
5
3
2
解析:**加粗样式

----在这里插入图片描述
正确答案: B C
1
2
5
6
解析:
一次读取多个输入值可以这样:
a,b,c = input('enter a b c: ').split()
sqrt函数是math模块中的,所以要math. sqrt


__new__和__init__的区别,说法正确的是?
正确答案: A B C D
new__是一个静态方法,而__init__是一个实例方法
new__方法会返回一个创建的实例,而__init__什么都不返回
只有在__new__返回一个cls的实例时,后面的__init__才能被调用
当创建一个新实例时调用__new
,初始化一个实例时用__init

解析:__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。

即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

----解释型语言的特性有什么?
正确答案: A B
非独立
效率低
独立
解析:

下列关于python socket操作叙述正确的是( )
正确答案: C D 你的答案: C D (正确)
使用recvfrom()接收TCP数据
使用getsockname()获取连接套接字的远程地址
使用connect()初始化TCP服务器连接
服务端使用listen()开始TCP监听

解析:
sk.recv(bufsize[,flag]):接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。
sk.recvfrom(bufsize[.flag]):与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。
sk.getsockname():返回套接字自己的地址。通常是一个元组(ipaddr,port)
sk.connect(address):连接到address处的套接字。一般,address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
sk.listen(backlog):开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。


解析:
不可变:整型、字符串、元组
可变: 集合、列表、字典

----以下程序输出为:
def test(a,b,*args):
print(a)
print(b)
print(args)
test(11,22,33,44,55,66,77,88,99)
正确答案: A
11 22 (33, 44, 55, 66, 77, 88, 99)
编译错误
运行错误
11 22 (11,22,33, 44, 55, 66, 77, 88, 99)
解析:11给a, 22给b,剩下的包装成元组给了不定长参数 *args,所以答案是A

----在这里插入图片描述
正确答案: C
2, 4, 6
0, 1, 2, 4, 5, 6
0, 1, 4, 5
0, 1, 4, 5, 6, 7, 8, 9
1, 2, 4, 5, 6
解析:range()函数的语法如下:range(start, end[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如 range(5) 等价于 range(0, 5);
end: 计数到 end 结束,但不包括 end。例如:range(0, 5) 等于 [0, 1, 2, 3, 4],没有5;
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

----下面哪个不是Python合法的标识符
正确答案: B
int32
40XL
self
name
解析:python中的标识符:
1)第一个字符必须是字母表中字母或下划线 _ 。
2)标识符的其他的部分由字母、数字和下划线组成。
3)标识符对大小写敏感。
4)不可以是python中的关键字,如False、True、None、class等。


解析:Python continue 语句跳出本次循环,而break跳出整个循环

可变类型:list, dict , set
不可变类型: int,string,tuple

-----Python不支持的数据类型有
正确答案: A
char
int
float
list
解析:
可变数据类型:列表list[ ]、字典dict{ }
不可变数据类型:整型int、字符串str、元组tuple()

----在这里插入图片描述
正确答案: B
4 / 3
(math.pi - 2) / (4 - math.pi)
math.e ** (6 / 21)
math.tan(53 / 180 * math.pi)
解析:跟概率无关,纯属面积之比
在这里插入图片描述

----关于Python中的复数,下列说法错误的是
正确答案: C
表示复数的语法是real + image j
实部和虚部都是浮点数
虚部必须后缀j,且必须是小写
方法conjugate返回复数的共轭复数
解析:选项 A:Python 中复数的表示方法;

选项 B:复数的实部与虚部均为浮点数;

选项 C:虚部的后缀可以是 “j” 或者 “J”;

选项 D:复数的 conjugate 方法可以返回该复数的共轭复数。


在这里插入图片描述
正确答案: C
1
2
6
10
An exception is thrown
解析:在 Python2 和 Python3 中,copy() 方法的意义相同,均为返回一个浅复制的 dict 对象,而浅复制是指只拷贝父对象,不会拷贝对象的内部的子对象,即两个 dict 父对象 kvps 与 theCopy 相互独立,但对它们内部子对象的引用却是共享的,所以 kvps[‘1’] 的改变不影响 theCopy[‘1’] 的值(因为改变的是父对象的值)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

----关于Python内存管理,下列说法错误的是
正确答案: B
变量不必事先声明
变量无须先创建和赋值而直接使用
变量无须指定类型
可以使用del释放资源
解析:本题答案选 B
原因如下:
Python 是弱类型脚本语言,变量就是变量,没有特定类型,因此不需要声明。
但每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
用 del 语句可以释放已创建的变量(已占用的资源)。

----下列哪种不是Python元组的定义方式?
正确答案: A
(1)
(1, )
(1, 2)
(1, 2, (3, 4))
解析:
在这里插入图片描述
Python 中的 tuple 结构为 “不可变序列”,用小括号表示。为了区别数学中表示优先级的小括号,当 tuple 中只含一个元素时,需要在元素后加上逗号。


在这里插入图片描述
正确答案: B
1000
10
11
9
解析:在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
答案:D
解析:
python里面%d表数字,%s表示字符串,%%表示一个%;
单引号内嵌套单引号需要转义字符 \ ;单引号内嵌套双引号不需要嵌套;
双引号内嵌套双引号需要转义字符/;双引号内引用单引号不需要转义字符;

----在python中,使用open方法打开文件,语法如下:
open(文件名,访问模式)
如果以二进制格式打开一个文件用于追加,则访问模式为:

正确答案: C
rb
wb
ab
a
解析:b 二进制模式
r 只读,指针将会放在文件的开头
rb 二进制只读,指针将会放在文件的开头
r+ 读写,指针将会放在文件的开头
rb+ 二进制读写,指针将会放在文件的开头
w 写入, 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
wb 二进制写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
w+ 读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 二进制读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
a 追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
ab 二进制追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
a+ 读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 二进制读写,如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。


在这里插入图片描述
答案:c
解析:在这里插入图片描述
由于比较运算符优先级大于逻辑运算符,根据上表,当 a > ‘b’,即 ‘a’ > ‘b’ 为 Fasle 时(‘a’ 的 ASCII 码比 ‘b’ 小),返回值为 ‘c’,故答案选C。

----从运行层面上来看,从四个选项选出不同的一个。
正确答案: B
JAVA
Python
objectC
C#
解析:Python是解释执行的,其他语言都需要先编译


return会跳出函数(遇到它,函数就结束)
break会跳出当前循环
continue 跳出当前循环并执行下一次

----若 a = (1, 2, 3),下列哪些操作是合法的?
正确答案: A B D
a[1:-1]
a*3
a[2] = 4
list(a)
解析:
在这里插入图片描述
a是元组不可修改

----Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是?
正确答案: A B C
_foo 不能直接用于’from module import *’
__foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
__foo__代表python里特殊方法专用的标识
__foo 可以直接用于’from module import *’

解析:python中主要存在四种命名方式:
1、object #公用方法
2、_object #半保护
#被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,在模块或类外不可以使用,不能用’from module import *’导入。
#object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是 classname__methodname。
3、
_ object #全私有,全保护
#私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据,不能用’from module import *’导入。
4、
_ object
_ #内建方法,用户不要这样定义

----在这里插入图片描述
正确答案: B
Python
Pyth
thon’s
Python‘s features
解析:

print(str2.group(0))
Python’s features

print(str2.group(1))
Pyth

print(str2.group(2))
's

re.match( r’(.)on(.?) .*’, str1, re.M|re.I),
将on左边和右边分组。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值