【python 基础语法二】流程语法及字符串相关操作

代码块

以冒号作为开始,用缩进来划分相同的作用域,这个整体是一个代码块

作用域:作用的区域

# ### 代码块 (以冒号作为开始,用缩进来划分相同的作用域,这个整体是代码块)
"""作用域: 作用的范围"""

if 10 == 11:
	print(1)
	print(2)
	print(3)
print(4)

# 缩进:要么全都使用\t tab  要么全都是使用4个空格 来表达相同的作用域,不能混再一起;
"""
if 10 == 10:
	print(1)
    print(2)
"""

流程控制

  • 流程: 代码执行的过程
  • 控制: 对代码执行过程中的把控

三大结构:

  1. 顺序结构: 默认代码从上到下,依次执行
  2. 分支结构: 单项分支、 双向分支、 多项分支、 巢状分支
  3. 循环结构: while / for

单项分支

"""
if 条件表达式:
	code1
	code2
当条件表达式成立,返回True,执行对应的代码块
"""
zhiye = "程序员"
if zhiye == "程序员":
	print("拿高薪")
	print("钱多,话少,死的早")
	print("发量日渐稀少")

双向分支 (二选一)

"""
if 条件表达式:
	code1  ..
else:
	code2 ... 
如果条件表达式成立,返回True ,执行if这个区间的代码块
如果条件表达式不成立,返回False,执行else这个区间的代码块
if   分支的代码块也叫做真区间
else 分支的代码块也叫做假区间
"""


zhiye = "美*外卖骑手"
zhiye = "律师"
if zhiye == "美*外卖骑手":
	print("打他")
	print("骂他")
	print("喂他辣椒水")
else:
	print("给你一朵红花")

内置方法 input

# input 等待用户输入字符串 (注意:结果一定是字符串)
"""
name = input("你好~ 你妈贵姓~")
print(name , type(name))
"""

# ### 模拟网站登录 
# 如果admin = wangwen  密码:pwd = 111 显示登录成功,否则显示登录失败

admin = input("请输入您的账号:")
pwd =  input("请输入您的密码:")
if admin == "wangwen" and pwd == "111":
	print("登录成功")
else:
	print("登录失败")

多项分支 (多选一)

"""
if 条件表达式1:
	code1 
elif 条件表达式2:
	code2
elif 条件表达式3:
	code3
else:
	code4
如果条件表达式1成立,执行对应的分支code1,反之判断条件表达式2是否成立
如果条件表达式2成立,执行对应的分支code2,反之判断条件表达式3是否成立
如果条件表达式3成立,执行对应的分支code3,如果不成立,直接走else分支,到此程序执行完毕

elif 可以是0个 或者 多个
else 可以是0个 或者 一个

"""

youqian = False
youfang = False
youche = False
if youqian == True:
	print("说明这个人很有实力")
elif youfang == True:
	print("能交给朋友么")
elif youche == True:
	print("开了雅迪艾玛调动车,我们碰一碰吧")	
else:
	print("你还是去做美*骑手吧")

巢状分支

"""单项分支,双向分支,多项分支的互相嵌套组合"""
youqian = True
youfang = True
youche = True
youyanzhi = True
youtili = False

if youqian == True:
	if youfang == True:
		if youche == True:
			if youyanzhi == True:
				if youtili == True:
					print("我要嫁给你~")
				else:
					print("你去吃点大腰子再来~")
			else:	
				print("你去一下泰国+韩国,整整容")
else:
	print("你是个好人呐~")
	
	
print("<=======================>")
#出题 height
#女生找对象
	# 男生在1米~1.5米之间 小强 你在哪里?
	# 男生在1.5~1.7米之间 没有安全感~
	# 男生 1.7~ 1.8米之间 帅哥 留个电话
	# 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗

# python特有
"""
height = float(input("请输入您的身高:"))
if 1 <= height < 1.5:
	print("小强 你在哪里?")
elif 1.5 <= height < 1.7:
	print("没有安全感~")
elif 1.7 <= height < 1.8:
	print("帅哥 留个电话")
elif 1.8 <= height < 2:
	print("你建议多一个女朋友吗")
else:
	print("抱歉,没有合适的选项")
"""

# 通用写法
height = float(input("请输入您的身高:"))
if 1 <= height and height < 1.5:
	print("小强 你在哪里?")
elif 1.5 <= height and height < 1.7:
	print("没有安全感~")
elif 1.7 <= height and height < 1.8:
	print("帅哥 留个电话")
elif 1.8 <= height and height < 2:
	print("你建议多一个女朋友吗")
else:
	print("抱歉,没有合适的选项")

循环结构

特点:减少冗余代码,提升执行效率

"""
语法:
while 条件表达式:
	code1

(1) 初始化一个变量
(2) 写上循环的条件
(3) 自增自减的值
"""

# ### 打印1 ~ 100
# (1) 初始化一个变量
i = 1
# (2) 写上循环的条件
while i <= 100:

	# (4) 写上循环的逻辑
	print(i)

	# (3) 自增自减的值
	i += 1 # i = i + 1

"""
代码解析:
第一次循环
i = 1  i<=100 判断为真,执行循环体 print(1)
i += 1 i => 2 
第二次循环
代码回到17行,重新进行条件判定 
i = 2  i<=100 判断为真,执行循环体 print(2)
i += 1 i => 3
第三次循环
代码回到17行,重新进行条件判定 
i = 3  i<=100 判断为真,执行循环体 print(3)
i += 1 i => 4

....
以此类推 

直到i = 101  i <= 100 判断为假,不执行循环体,到此循环结束...
1 ~ 100
"""

案例:

# ### 1 ~ 100的累加和

# (1) 初始化一个变量
i = 1
total = 0

# (2) 写上循环的条件
while i <= 100 :
	# (4) 写上自定义的逻辑
	total += i
	# (3) 自增自减的值
	i += 1
print(total)

死循环

"""
while True:
	print(1)
"""

# ### 用死循环的方法实现 1 ~ 100累加和
i = 1
total = 0
sign = True
while sign:
	total += i
	i+=1
	
	# 判断i是否加到了101 , 不参与循环
	if i == 101:
		# 终止循环
		sign = False
print(total) #1 ~ 100 = 5050

内置方法 help

# help 查看某个方法的文档
help(print)

字符串的相关操作

字符串的拼接 +

# (1)字符串的拼接 +
str1 = "赵沈阳,"
str2 = "so strong"
res = str1 + str2
res = "赵沈阳," + "so strong"
print(res)

# res = res + ",旁边的同学很喜欢他~"
res += ",旁边的同学很喜欢他~"
print(res)

字符串的重复 *

# (2)字符串的重复 *
strvar = "重要的事情说三遍~"
res = strvar * 3
print(res)

字符串跨行拼接 \

# (3)字符串跨行拼接 \
str1 = "kskfjskjfklsjfklasdjklfjaskldjfaskljfklasjdfklasjdklfjaskldfjaskldjflasjfsf" \
"1122334"
print(str1)

字符串的索引

# (4)字符串的索引
#          0 1 2 3 4 5
strvar = "赵同学真帅呀"
#         -6-5-4-3-2-1
print(strvar[1])

字符串的切片: (截取)

"""
语法 => 字符串[::]  完整格式:[开始索引:结束索引:间隔值(步进step)]    取头舍尾
	(1)[开始索引:]  从开始索引截取到字符串的最后
	(2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
	(3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
	(4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
	(5)[:]或[::]  截取所有字符串
"""
strvar = "王文是这个宇宙当中,最完美,无暇,善良,漂亮,英俊,帅气,潇洒,风流倜傥的神秘男孩"
# (1)[开始索引:]  从开始索引截取到字符串的最后
res = strvar[3:]
print(res)
	
# (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
"""4这个最大值本身获取不到,要获取到4之前的那一个数据 : 取头舍尾"""
res = strvar[:5]
print(res)
	
# (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
res = strvar[10:16]
print(res)

# (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符

# 从左向右截取
res = strvar[::3]
# 0 3 6 9 12 15 ... 
print(res)

# 从右向左截取
res = strvar[::-1]
# -1 -2 -3 -4 -5 -6 .... 
print(res)

res = strvar[-3:-10:-2]
# -3 -5 -7 -9   秘的倜风
print(res)

print("<====>")
"""从左到右截,间隔值为正值,反过来,间隔值是负值,才能保证截取到数据"""
"""
res = strvar[-3:-10:10] # 错误的逻辑,但语法不报错
print(res)
res = strvar[10:1]  # 默认步进为1,故也取不到数据,但不报错
print(res)
"""

循环练习

单循环

# 一个循环实现十行十列,隔行换色的小星星
"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
"""

## 公式:任意数和n进行地板除,会出现n个相同的数


# 方法一
i = 0 
while i < 100:
	
	# (1)打印星星
	if i // 10 % 2 == 0:
		print("★",end="")
	else:
		print("☆",end="")

	# (2)打印换行 (在9 19 29 .. 99 )
	if i % 10 == 9:
		print()
	
	i += 1 

# 方法二
print("<=================>")
i = 10
while i < 110:
	# 打印星星 
	num = int(str(i)[-2])
	if num % 2 == 0 :
		print("★",end="")
	else:
		print("☆",end="")
	# 打印换行
	if i % 10 == 9:
		print()
	i+=1

双循环练习

# 用两个循环完成十行十列隔行换色的小星星
"""
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
"""
"""
外层的循环i动的慢
内层的循环j动的快
外层的i动一次, 内层的循环动10次

"""
i = 0
while i < 10 :
	j = 0
	while j < 10:
		if i % 2 == 0:
			print("☆",end="")
		else:
			print("★",end="")
			
		j +=1
	print()
	i +=1

# 99乘法表
i = 1
while i <= 9:
	# 打印对应的表达式
	j = 1
	while j <= i:
		print("%d*%d=%2d " % (i,j,i*j) ,end="" )
		j+=1
	
	# 打印换行
	print()
	
	i +=1

百钱买百鸡

# 公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

"""
穷举法:把数据拿出来一个一个试

公鸡 : x  母鸡 : y  小鸡: z
鸡的数量:x + y + z = 100
鸡的价格:5 * x + 3 * y + 1/3*z = 100   
"""

x = 0
while x <= 20:
	
	y = 0
	while y <= 33:
		
		z = 0
		while z <= 100:
			
			if x+y+z == 100 and 5*x + 3 * y + 1/3*z == 100 :
				print(x,y,z)
			z += 1	
		
		y +=1
	
	x += 1

循环中关键字的使用

# ### 关键字的使用  pass break continue
# pass 过 (代码块中的占位符)
"""
if 20 == 20:
	pass
	
while True:
	pass
"""

# break 终止当前循环 (只能用在循环之中)
# 1 ~ 10 遇到5终止循环
i = 1
while i <= 10:
	print(i)
	if i == 5:
		break
	i +=1
	
	
i = 1
while i <= 3:
	
	j = 1
	while j <=3:
		if j == 2:
			break
		print(i,j)
		j+=1

	i +=1
# 1 1
# 2 1 
# 3 1
"""
if 5 == 5: # error break 关键字不能在循环之外
	break
"""

# continue 跳过当前循环,从下一次循环开始
# 打印 1 ~ 10 跳过5
i = 1
while i <= 10:	
	if i == 5:
		# 在跳过之前,因为会终止执行后面的代码,从下一次循环开始
		# 为了避免死循环,手动加1
		i += 1
		continue
	print(i)
	i +=1
	
# 1 ~ 100 打印所有不含有4的数字
# 方法一
print("<============>")
i = 1
while i <= 100:
	strvar = str(i)
	# print(strvar)
	if "4" in strvar:
		i += 1
		continue
	print(i)
	i +=1
	
	
# 方法二
print("<============>")
i = 1
while i <= 100:
	if i // 10 == 4 or i % 10 == 4:
		i+=1
		continue
	print(i)
	i+=1

for 循环

遍历 或 循环 或 迭代 , 即把容器中的元素一个一个获取出来

while循环在遍历数据时的局限性

# while循环在遍历数据时的局限性 (特别是无序的数据)
setvar = {"a","b","c"} # not ok
i = 0
while i < len(setvar):
	print(setvar[i])
	i+=1

Iterable 可迭代性数据:

  1. 容器类型数据
  2. range对象
  3. 迭代器

for循环的基本语法

"""
for 变量 in Iterable:
	code1
"""

容器类型数据

# 字符串
container = "北京和深圳温差大概20多度"
# 列表
container = [1,2,3,4,4,5]
# 元组
container = ("孙开洗","孙健","孙悟空")
# 集合 
container = {"陈璐","曹静怡","王志国","邓鹏","合力"}
# 字典
container = {"cl":"风流倜傥","cjy":"拳击选手","wzg":"寻花问柳","dp":"帅气,祖国的栋梁","hl":"你是个好人"}

# 遍历数据
for i in container:
	print(i)
内置函数-判断元素类型 isinstance
1.遍历不等长多级容器
container = [1,2,3,4,("嗄","234",{"马春配","李虎凌","刘子涛"})]
for i in container:
	# 判断当前元素是否是容器,如果是,进行二次遍历,如果不是,直接打印
	if isinstance(i,tuple):
		# ("嗄","234",{"马春配","李虎凌","刘子涛"})
		for j in i:
			# 判断当前元素是否是集合,如果是,进行三次遍历,如果不是,直接打印
			if isinstance(j,set):
				# j = {"马春配","李虎凌","刘子涛"}
				for k in j :
					print(k)
			else:
				print(j)
				
	# 打印数据
	else:
		print(i)
2.遍历等长的容器
container = [("马云","小马哥","马春配") , ["王健林","王思聪","王志国"],{"王宝强","马蓉","宋小宝"}]
for a,b,c in container:
	print(a,b,c)

变量的解包 - 解压赋值

变量个数需与容器长度一致。

a,b,c = "poi"
a,b = (1,2)
a,b = 1,2
a,b,c = [10,11,12]
a,b = {"林明辉","家率先"}
a,b = {"lmh":"林明辉","jsx":"家率先"}
print(a,b,c)

# 解压赋值 :对应的变量名少一个不行,对应的变量名多一个也不行
salaries=[111,222,333,444,555]
mon0,mon1,mon2,mon3,mon4=salaries

# 引入*,可以帮助我们取两头的值,无法取中间的值
# 取前三个值
x,y,z,*_=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
print(x,y,z)
print(_)

# 取后三个值
*_,x,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

x,*_,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

salaries=[111,222,333,444,555]
_,*middle,_=salaries
print(middle)

# 解压字典默认解压出来的是字典的key
x,y,z=dic={'a':1,'b':2,'c':3}

range方法

"""
range([开始值,]结束值[,步长])
取头舍尾,结束值本身获取不到,获取到它之前的那一个数据
"""

# range(一个值)  默认从0开始
for i in range(5): # 0 ~ 4
	print(i)

# range(二个值)
for i in range(3,8): # 3 4 5 6 7 
	print(i)

# range(三个值) 正向的从左到右
for i in range(1,11,3): # 1 4 7 10 
	print(i)

# range(三个值) 逆向的从右到左
for i in range(10,0,-1): # 10 9 8 7 ... 1 
	print(i)

for 与 while 循环总结

  • while 一般用于处理复杂的逻辑关系
  • for 一般用于迭代数据
  • 部分情况下两个循环可以互相转换;

字符串的格式化format

(1)顺序传参

"""{}是format中的占位符"""
strvar = "{}向{}开了一枪,饮蛋而亡".format("赵沈阳","需保障")
print(strvar)

(2)索引传参

strvar = "{1}向{0}开了一枪,饮蛋而亡".format("赵沈阳","需保障")
print(strvar)

(3)关键字传参

strvar = "{who1}摸了{who2}一下,回头一巴掌".format(who1="王伟",who2="马春妮")
strvar = "{who1}摸了{who2}一下,回头一巴掌".format(who1="马春妮",who2="王伟")
print(strvar)

(4)容器类型数据(列表或元祖)传参

# 方法一
strvar = "{0[0]}摸了{1[1]}一下,嘿嘿一笑,有戏".format(["赵蜂拥","赵世超","杨元涛"] , ("王雨涵","王同培"))
print(strvar)

# 方法二(推荐)
strvar = "{group1[0]}摸了{group2[1]}一下,嘿嘿一笑,有戏".format(group1=["赵蜂拥","赵世超","杨元涛"] , group2 = ("王雨涵","王同培"))
print(strvar)

# 方法三(推荐) 注意一.如果该容器是字典,通过键取值时,不需要加引号  注意二.通过下标取值时,不能使用负号(逆向索引)
strvar = "{group1[zfy]}摸了{group2[-1]}一下,嘿嘿一笑,有戏".format(group1={"zfy":"赵蜂拥","zsc":"赵世超"} , group2 = ("王雨涵","王同培"))
print(strvar)

(5)format的填充符号的使用( ^ > < )

  • ^ 原字符串居中显示
  • > 原字符串居右显示
  • < 原字符串居左显示
"""
{who:*^10}
* : 填充的符号
^ : 原字符串居中显示 (^ > < 之一)
10: 原字符串长度 + 填充符号的长度 = 10
"""
strvar = "{who:*^10}去长春长生医药公司,{do:>>10},感觉{feel:!<10}".format(who="李亚峰",do="扎疫苗",feel="血槽被掏空")
print(strvar) # ***李亚峰**** 

(6)进制转换等特殊符号的使用( :d :f :s :, )

# :d 整型占位符 (强制要求类型是整型)
strvar = "刘一峰昨天晚上买了{:d}个花露水泡脚".format(9)
print(strvar) # 填充浮点数会报错

# :3d 占3位,不够三位拿空格来补位(原字符串居右)
strvar = "刘一峰昨天晚上买了{:3d}个花露水泡脚".format(9)
print(strvar)
strvar = "刘一峰昨天晚上买了{:<3d}个花露水泡脚".format(9)
print(strvar)
strvar = "刘一峰昨天晚上买了{:^3d}个花露水泡脚".format(9)
print(strvar)

# :f 浮点型占位符 (强制要求类型是浮点型) 默认保留小数6位
strvar = "王雨涵毕业之后的薪资是{:f}".format(9.9)
print(strvar)

# :.2f 小数点后保留2位,存在四舍五入
strvar = "王雨涵毕业之后的薪资是{:.2f}".format(9.188888)
print(strvar)

# :s 字符串占位符
strvar = "{:s}".format("杨元涛真帅")
print(strvar)

# :, 金钱占位符
strvar = "{:,}".format(12345678)
print(strvar)

# 综合案例
strvar = "{:s}开工资{:.2f}元,买了{:d}个兰博基尼".format("孙坚",300000.12345,10)
print(strvar)

字符串相关函数

第一组:常用方法

1. capitalize 字符串首字母大写

strvar = "how are you"
res = strvar.capitalize()
print(res) # How are you

2. title 每个单词的首字母大写

strvar = "how old are you"
res = strvar.title()
print(res)  # How Old Are You

3. upper将所有字母变成大写

strvar = "How Old Are You"
res = strvar.upper()
print(res) # HOW OLD ARE YOU

4. lower将所有字母变成小写

strvar = "How Old Are You"
res = strvar.upper()
print(res) # how old are you

5. swapcase 大小写互换

strvar = "How old Are You"
res = strvar.swapcase()
print(res) # hOW OLD aRE yOU

6. len 计算字符串的长度

strvar = "python32真火"
res = len(strvar)
print(res) # 10

7. count统计字符串中某个元素的数量

"""count(字符,[开始值,结束值])"""
strvar = "真热真热呀"
# res = strvar.count("真")     # 2
# res = strvar.count("热",2)   # 1
# res = strvar.count("热",2,3) # 只有真这个字符 没有热
print(res)

8. find查找某个字符串第一次出现的索引位置 (推荐)

"""find(字符,[开始值,结束值])"""
strvar = "To be or not to be that is a question"
res = strvar.find("to") # 13
res = strvar.find("be",4) # 16
# 如果find 返回的是 -1 代表没找到
res = strvar.find("be",4,10) # 4 ~ 9 返回 -1
print(res)

9. index 与 find 功能相同 find找不到返回-1, index找不到数据直接报错

res = strvar.index("be",4,10) 
print(res) # 没找到 报错 ValueError: substring not found

10. startswith 判断是否以某个字符或字符串为开头

"""
startswith(字符,[开始值,结束值])
endswith(字符,[开始值,结束值])
"""
strvar = "To be or not to be that is a question"
res = strvar.startswith("To")  # True
res = strvar.startswith("To",10) # False
print(res)

11. endswith判断是否以某个字符或字符串结尾

res = strvar.endswith("question") # True
res = strvar.endswith("is",-14,-11) #  is  True
print(res)

第二组:is 系列

1. isupper判断字符串是否都是大写字母

strvar = "HOW  A  YOU"
res = strvar.isupper()
print(res) # True

2. islower 判断字符串是否都是小写字母

strvar = "asdf - as"
res = strvar.islower()
print(res) # True

3. isdecimal检测字符串是否以数字组成 必须是纯数字

strvar = "abcdefg"  # False
strvar = "2134234.123" # Flase
strvar = "2134234" # True
res = strvar.isdecimal()
print(res)

4. 其他方法

"""
istitle   判断字符串是否每个单词都首字母大写 
isalnum   判断字符串是否是由数字、字母、汉字组成 
isalpha   判断字符串是否由字母和文字组成 
isdigit   检测字符串数是数字组成 接受二进制字节流 
isnumeric 检测字符串是否以数字组成 接受中文"四"
isspace   判断字符串是否由空白符组成
"""

第三组 重要方法

1. split按某字符将字符串分割成列表(默认字符是空格) ***常用

strvar = "you can you up"
lst = strvar.split() # ['you', 'can', 'you', 'up']
strvar = "you#can#you#up#no#can#no#bb"
lst = strvar.split("#")
print(lst)

2. join 按某字符将列表拼接成字符串(容器类型都可) ***

lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
strvar = " ".join(lst)
strvar = "#".join(lst) # you#can#you#up#no#can#no#bb
print(strvar)

3. replace 把字符串的旧字符换成新字符 ***

"""字符串.replace('旧字符','新字符'[, 限制替换的次数])"""
strvar = "范冰冰爱不爱我,爱我,不爱我,爱我,不爱我"
res = strvar.replace("不爱我","爱我")
# 选择替换的次数
res = strvar.replace("不爱我","爱我",1)
print(res)

4. strip默认去掉首尾两边的空白符 ***

"""空白符: 空格 \n \t \r ... """
strvar = "     周润发  "
res = strvar.strip() # 周润发
print(strvar) # 不改变原变量的值
print(res)

5. center填充字符串,原字符居中 (默认填充空格)

"""center(字符长度,填充符号)"""
strvar = "人世超"
res = strvar.center(10) # 默认 是空白
res = strvar.center(10,"*") # ***人世超****
print(res)

6. 其他方法

"""
splitlines  按换行来进行切分(\n)
zfill  		填充字符串(默认填充0,原字符串右对齐)
ljust  		填充字符串,原字符居左 (默认填充空格)
rjust  		填充字符串,原字符居右 (默认填充空格)
rstrip 		去掉右边某个字符 
lstrip 		去掉左边某个字符 
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值