4-操作列表(循环结构)

4.1 遍历整个列表

需要对列表中的每个元素都执行相同的操作时,可使用Python中的for循环。

下面使用for循环来打印魔术师名单中的所有名字:

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians:
    print(magician)

4.1.1 细说循环过程

使用单数和复数式名称,可帮助你判断代码段处理的是单个列表元素还是整个列表。

4.1.2 在for循环中执行更多操作

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians: 
    print(f"{magician.title()}, that was a great trick!")
    print(f"I can't wait to see your next trick, {magician.title()}.\n")

4.1.3 在for循环结束后执行一些操作

for循环结束后怎么办呢?通常,你需要提供总结性输出或接着执行程序必须完成的其他任务。

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians: 
    print(f"{magician.title()}, that was a great trick!")
    print(f"I can't wait to see your next trick, {magician.title()}.\n")
    
print("Thank you, everyone. That was a great magic show!")

4.2 避免缩进错误

Python根据缩进来判断代码行与前一个代码行的关系。

4.2.1 忘记缩进

Python没有找到期望缩进的代码块时,会让你知道哪行代码有问题。

 File "E:\...\magicians.py", line 3
    print(f"{magician.title()}, that was a great trick!")
    ^
IndentationError: expected an indented block after 'for' statement on line 2

通常,将紧跟在for语句后面的代码行缩进,可消除这种缩进错误。 

4.2.2 忘记缩进额外的代码行

for magician in magicians: 
    print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see your next trick, {magician.title()}.\n")

从语法上看,这些Python代码是合法的,但由于存在逻辑错误,结果并不符合预期。

4.2.3 不必要的缩进

magicians = ['alice', 'david', 'carolina'] 
    for magician in magicians: 
    print(f"{magician.title()}, that was a great trick!")
    print(f"I can't wait to see your next trick, {magician.title()}.\n")
File "E:\...\magicians.py", line 2
    for magician in magicians: 
IndentationError: unexpected indent

4.2.4 循环后不必要的缩进

如果不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。在有些情况下,这可能导致Python报告语法错误,但在大多数情况下,这只会导致逻辑错误。

4.2.5 遗漏了冒号

for语句末尾的冒号告诉Python,下一行是循环的第一行。

假如遗漏了冒号,如下:

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians
    print(f"{magician.title()}, that was a great trick!")
File "E:\...\magicians.py", line 2
    for magician in magicians
                             ^
SyntaxError: expected ':'

动手试一试

练习4-1:比萨

想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for循环将每种比萨的名称打印出来。修改这个for循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨,都显示一行输出,下面是一个例子。I like pepperoni pizza.在程序末尾添加一行代码,它不在for循环中,指出你有多喜欢比萨。输出应包含针对每种比萨的消息,还有一个总结性句子,下面是一个例子。I really love pizza!

练习4-2:动物

想出至少三种有共同特征的动物,将其名称存储在一个列表中,再使用for循环将每种动物的名称打印出来。修改这个程序,使其针对每种动物都打印一个句子,下面是一个例子。A dog would make a great pet.在程序末尾添加一行代码,指出这些动物的共同之处,如打印下面这样的句子。Any of these animals would make a great pet!

4.3 创建数值列表

4.3.1 使用函数range()

函数range()让Python从指定的第一个值开始数,并在到达你指定的第二个值时停止。

for number in range(1,5):
	print(number)

调用函数range()时,也可只指定一个参数,这样它将从0开始。例如,range(6)返回数0~5。 

4.3.2 使用range()创建数字列表

要创建数字列表,可使用函数list()将range()的结果直接转换为列表。

numbers = list(range(1, 6))
print(numbers)

使用函数range()时,还可传入第三个参数作为步长。

even_numbers = list(range(2, 11, 2)) 
print(even_numbers)

使用函数range()几乎能够创建任何需要的数集。例如,如何创建一个列表,其中包含前10个整数(1~10)的平方呢?

squares=[]
for value in range(1,11):
	square=value ** 2
	squares.append(square)
print(squares)

可以不用临时变量 

squares=[]
for value in range(1,11):
	squares.append(value ** 2)
print(squares)

可节省20ms。

有时候,使用临时变量会让代码更易读;而在其他情况下,这样做只会让代码无谓地变长,执行所需时间长。你首先应该考虑的是,编写清晰易懂且能完成所需功能的代码,等到审核代码时,再考虑采用更高效的方法。

4.3.3 对数字列表执行简单的统计计算

有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:

max(列表),min(列表),sum(列表)

4.3.4 列表解析

列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。

下面的示例使用列表解析创建你在前面看到的平方数列表:

squares = [value**2 for value in range(1, 11)]
print(squares)

动手试一试

练习4-3:数到20

使用一个for循环打印数1~20(含)。

练习4-4:一百万

创建一个包含数1~1 000 000的列表,再使用一个for循环将这些数打印出来。(如果输出的时间太长,按Ctrl + C停止输出或关闭输出窗口。)

练习4-5:一百万求和

创建一个包含数1~1 000 000的列表,再使用min()和max()核实该列表确实是从1开始、到1 000 000结束的。另外,对这个列表调用函数sum(),看看Python将一百万个数相加需要多长时间。练习

4-6:奇数

通过给函数range()指定第三个参数来创建一个列表,其中包含1~20的奇数,再使用一个for循环将这些数打印出来。

练习4-7:3的倍数

创建一个列表,其中包含3~30能被3整除的数,再使用一个for循环将这个列表中的数打印出来。

练习4-8:立方

将同一个数乘三次称为立方。例如,在Python中,2的立方用2**3表示。请创建一个列表,其中包含前10个整数(1~10)的立方,再使用一个for循环将这些立方数打印出来。

练习4-9:立方解析 使用列表解析生成一个列表,其中包含前10个整数的立方。

4.4 使用列表的一部分

4.4.1 切片

列表的部分元素称为切片。

要创建切片,可指定要使用的第一个元素和最后一个元素的索引+1。

players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[1:3])

如果没有指定第一个索引,Python将自动从列表开头开始。

要让切片终止于列表末尾,也可使用类似的语法。

负数索引返回离列表末尾相应距离的元素,比如最后三名队员,可使用切片players[-3:] 。

注意 可在表示切片的方括号内指定第三个值。这个值告诉Python在指定范围内每隔多少元素提取一个。

4.4.2 遍历切片

如果要遍历列表的部分元素,可在for循环中使用切片。

4.4.3 复制列表

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。

my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods[:]

my_foods.append('cannoli')
friend_foods.append('ice cream')

print("My favorite foods are:")
print(my_foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

如果想通过friend_foods = my_foods来复制表,这是行不通的。

因为这里将my_foods赋给friend_foods,而不是将my_foods的副本赋给friend_foods。这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。 

动手试一试

练习4-10:切片

选择你在本章编写的一个程序,在末尾添加几行代码,以完成如下任务。

▲ 打印消息“The first three items in the list are:”,再使用切片来打印列表的前三个元素。

▲ 打印消息“Three items from the middle of the list are:”,再使用切片来打印列表的中间三个元素。

▲ 打印消息“The last three items in the list are:”,再使用切片来打印列表的末尾三个元素。

练习4-11:你的比萨,我的比萨

在你为完成练习4-1而编写的程序中,创建比萨列表的副本,并将其赋给变量friend_pizzas,再完成如下任务。

▲ 在原来的比萨列表中添加一种比萨。

▲ 在列表friend_pizzas中添加另一种比萨。

▲ 核实有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一个for循环来打印第一个列表;打印消息“My friend's favorite pizzas are:”,再使用一个for循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。

练习4-12:使用多个循环

在本节中,为节省篇幅,程序foods.py的每个版本都没有使用for循环来打印列表。请选择一个版本的foods.py,在其中编写两个for循环,将各个食品列表打印出来。

4.5 元组

Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

4.5.1 定义和访问元组

元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组后,就可使用索引来访问其元素,就像访问列表元素一样。

dimensions = (200, 50)
print(dimensions[0])

如果修改元组dimensions的一个元素,将发生错误:

Traceback (most recent call last):
  File "E:\...\dimensions.py", line 2, in <module>
    dimensions[0]=100
TypeError: 'tuple' object does not support item assignment

注意 严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清晰。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号:dimensions = (200, ) 

4.5.2 遍历元组中的所有值

像列表一样,也可以使用for循环来遍历元组中的所有值

4.5.3 修改元组变量

虽然不能修改元组的元素,但可以给关联元组的变量赋值。

dimensions = (200, )
dimensions=(300,600)

动手试一试

练习4-13:自助餐

有一家自助式餐馆,只提供五种简单的食品。请想出五种简单的食品,并将其存储在一个元组中。▲ 使用一个for循环将该餐馆提供的五种食品都打印出来。

▲ 尝试修改其中的一个元素,核实Python确实会拒绝你这样做。

▲ 餐馆调整了菜单,替换了它提供的其中两种食品。请编写一个这样的代码块:给元组变量赋值,并使用一个for循环将新元组的每个元素都打印出来。

4.6 设置代码格式

4.6.1 格式设置指南

Python改进提案(Python Enhancement Proposal,PEP)。

PEP 8是最古老的PEP之一,向Python程序员提供了代码格式设置指南。

4.6.2 缩进

PEP 8建议每级缩进都使用四个空格。

你在编写代码时绝对应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。

如果混合使用了制表符和空格,可将文件中的所有制表符都转换为空格,大多数编辑器提供了这样的功能。

4.6.3 行长

很多Python程序员建议每行不超过80字符。

PEP 8还建议注释的行长不应超过72字符。

在大多数编辑器中,可以设置一个视觉标志(通常是一条竖线),让你知道不能越过的界线在什么地方。

注意 附录B介绍了如何配置文本编辑器,使其在你按制表符键时插入四个空格,并且显示一条垂直参考线,帮助你遵守行长不超过79字符的约定。

4.6.4 空行

要将程序的不同部分分开,可使用空行。

4.6.5 其他格式设置指南

等介绍更复杂的Python结构时,我们再来分享相关的其他PEP 8指南。

动手试一试

练习4-14:PEP 8

请访问Python网站并搜索“PEP 8 — Style Guide for PythonCode”,阅读PEP 8格式设置指南。当前,这些指南适用的情况不多,但可以大致浏览一下。

练习4-15:代码审核

从本章编写的程序中选择三个,根据PEP 8指南对它们进行修改。

▲ 每级缩进都使用四个空格。对你使用的文本编辑器进行设置,使其在你按Tab键时插入四个空格。如果你还没有这样做,现在就去做吧(有关如何设置,请参阅附录B)。

▲ 每行都不要超过80字符。对你使用的编辑器进行设置,使其在第80个字符处显示一条垂直参考线。

▲ 不要在程序文件中过多使用空行。

4.7 小结

在本章中,你学习了:如何高效地处理列表中的元素;如何使用for循环遍历列表,Python如何根据缩进来确定程序的结构,以及如何避免一些常见的缩进错误;如何创建简单的数字列表,以及可对数字列表执行的一些操作;如何通过切片来使用列表的一部分和复制列表。你还学习了元组(它对不应变化的值提供了一定程度的保护),以及在代码变得越来越复杂时如何设置格式,使其易于阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【大纲】 0-1-课程内容和安排介绍 1-1-计算机的概念 1-2-程序设计语言概述 1-3-Python语言 1-4-Python开发环境配置 1-5-基本程序设计方法 1-6-理解问题的计算部分 1-7-温度转换程序实例 2-1-Python程序元素分析 2-2-程序编写模板 2-3-turtle库和蟒蛇绘制程序 2-4-蟒蛇绘制程序分析 2-5-函数库的引用 3-1-Python中类型的概念 3-2-数字类型 3-3-字符串类型 3-4-字符串的操作 3-5-元组类型 3-6-列表类型及操作 3-7-math库和random库 3-8-π的计算 4-1-1-程序基本结构 4-1-2-简单分支 4-1-3-多分支 4-1-4-异常处理设计 4-1-5-三者最大实例分析 4-2-1-基本循环结构 4-2-2-通用循环构造方法 4-2-3-死循环半路循环 4-2-4-布尔表达式 6-1-1-文件的基础 6-1-2-文件的基本处理 6-1-3-文件实例一 6-1-4-文件实例二 6-2-1-字典的基础 6-2-2-字典的操作 6-2-3-字典实例一 6-2-4-字典实例二 7-3-1-计算思维 7-3-2-自顶向下的设计 7-3-3-自底向上的执行 7-3-4-软件工程 7-3-5-敏捷开发方法 7-4-1-面向过程的程序设计 7-4-2-面向对象的程序设计 7-4-3-基本例子 7-4-4-面向对象的特点 8-6-1-基本介绍 8-6-2-图形对象概念 8-6-3-交互式图形用户接口 8-6-4-图形库的应用方法 8-6-5-Turtle库介绍 8-6-6-图形用户接口实例 8-6-7-Turtle实例 8-6-8-Turtle Art 第6章-函数与递归-1-函数定义 第6章-函数与递归-2-函数的调用和返回值 第6章-函数与递归-3-改变参数值的函数 第6章-函数与递归-4-程序结构和递归 第6章-函数与递归-5-函数实例
前言 1 章 绪论1 本章概略1 1.1 针对考研数据结构的代码书写规范以及C 与C 语言基础1 1.1.1 考研综合应用题中算法设计部分的代码书写规范1 1.1.2 考研中的C 与C 语言基础3 1.2 算法的时间复杂度与空间复杂度分析基础 12 1.2.1 考研中的算法时间复杂度分析 12 1.2.2 例题选讲 12 1.2.3 考研中的算法空间复杂度分析 14 1.3 数据结构和算法的基本概念 14 1.3.1 数据结构的基本概念 14 1.3.2 算法的基本概念 15 习题 16 习题答案 17 2 章 线性表 20 大纲要求 20 考点与要点分析 20 核心考点 20 基础要点 20 知识点讲解 20 2.1 线性表的基本概念与实现 20 2.2 线性表的结构体定义和基本操作 24 2.2.1 线性表的结构体定义 24 2.2.2 顺序表的操作 26 2.2.3 单链表的操作 29 2.2.4 双链表的操作 33 2.2.5 循环链表的操作 35 ▲真题仿造 35 真题仿造答案与讲解 36 习题 真题精选 37 习题答案 真题精选答案 41 3 章 栈和队列 55 大纲要求 55 考点与要点分析 55 核心考点 55 基础要点 55 知识点讲解 55 2019 版数据结构高分笔记 X 3.1 栈和队列的基本概念 55 3.1.1 栈的基本概念 55 3.1.2 队列的基本概念 56 3.2 栈和队列的存储结构、算法与应用 56 3.2.1 本章所涉及的结构体定义 56 3.2.2 顺序栈 57 3.2.3 链栈 59 3.2.4 栈的应用 60 3.2.5 顺序队 64 3.2.6 链队 66 3.3 抽象数据类型 69 ▲真题仿造 71 真题仿造答案与讲解 71 习题 真题精选 74 习题答案 真题精选答案 79 4 章 串 91 知识点讲解 91 4.1 串数据类型的定义 91 4.1.1 串的定义 91 4.1.2 串的存储结构 91 4.1.3 串的基本操作 92 4.2 串的模式匹配算法 95 4.2.1 简单模式匹配算法 95 4.2.2 KMP 算法 96 4.2.3 KMP 算法的改进 99 习题 102 习题答案 103 5 章 数组、矩阵与广义表 113 知识点讲解 113 5.1 数组 113 5.2 矩阵的压缩存储 114 5.2.1 矩阵 114 5.2.2 特殊矩阵和稀疏矩阵 115 5.3 广义表 121 习题 122 习题答案 123 6 章 树与二叉树 132 大纲要求 132 考点与要点分析 132 核心考点 132 基础要点 132 知识点讲解 132 6.1 树的基本概念 132 6.1.1 树的定义 132 6.1.2 树的基本术语 132 6.1.3 树的存储结构 133 6.2 二叉树 134 6.2.1 二叉树的定义 134 6.2.2 二叉树的主要性质 135 6.2.3 二叉树的存储结构 137 6.2.4 二叉树的遍历算法 137 6.2.5 二叉树遍历算法的改进 146 6.3 树和森林与二叉树的互相转换 155 6.3.1 树转换为二叉树 155 6.3.2 二叉树转换为树 156 6.3.3 森林转换为二叉树 156 6.3.4 二叉树转换为森林 157 6.3.5 树和森林的遍历 157 6.4 树与二叉树的应用 158 6.4.1 二叉排序树与平衡二叉树 158 6.4.2 赫夫曼树和赫夫曼编码 159 ▲真题仿造 162 真题仿造答案与解析 162 习题 真题精选 163 习题答案 真题精选答案 168 7 章 图 183 大纲要求 183 考点与要点分析 183 核心考点 183 基础要点 183 知识点讲解 183 7.1 图的基本概念 183 7.2 图的存储结构 184 7.2.1 邻接矩阵 185 7.2.2 邻接表 186 7.2.3 邻接多重表 187 7.3 图的遍历算法操作 188 7.3.1 深度优先搜索遍历 188 7.3.2 广度优先搜索遍历 189 7.3.3 例题选讲 190 7.4 小(代价)生成树 193 7.4.1 普里姆算法和克鲁斯卡尔算法 193 7.4.2 例题选讲 197 7.5 短路径 198 7.5.1 迪杰斯特拉算法 198 7.5.2 弗洛伊德算法 204 7.6 拓扑排序 207 7.6.1 AOV 网 207 7.6.2 拓扑排序核心算法 207 7.6.3 例题选讲 209 7.7 关键路径 209 7.7.1 AOE 网 209 7.7.2 关键路径核心算法 210 ▲真题仿造 213 真题仿造答案与解析 213 习题 真题精选 215 习题答案 真题精选答案 221 8 章 排序 234 大纲要求 234 考点与要点分析 234 核心考点 234 基础要点 234 知识点讲解 235 8.1 排序的基本概念 235 8.1.1 排序 235 8.1.2 稳定性 235 8.1.3 排序算法的分类 235 8.2 插入类排序 236 8.2.1 直接插入排序 236 8.2.2 折半插入排序 237 8.2.3 希尔排序 238 8.3 交换类排序 240 8.3.1 起泡排序 240 8.3.2 快速排序 241 8.4 选择类排序 243 8.4.1 简单选择排序 243 8.4.2 堆排序 244 8.5 二路归并排序 247 8.6 基数排序 248 8.7 外部排序 252 8.7.1 概念与流程 252 8.7.2 置换-选择排序 253 8.7.3 佳归并树 254 8.7.4 败者树 255 8.7.5 时间与空间复杂度相关问题 257 8.8 排序知识点小结 258 ▲真题仿造 259 真题仿造答案与解析 259 习题 真题精选 260 习题答案 真题精选答案 265 9 章 查找 275 大纲要求 275 考点与要点分析 275 核心考点 275 基础要点 275 知识点讲解 275 9.1 查找的基本概念、顺序查找法、折半查找法 275 9.1.1 查找的基本概念 275 9.1.2 顺序查找法 276 9.1.3 折半查找法 277 9.1.4 分块查找 279 9.2 二叉排序树与平衡二叉树 280 9.2.1 二叉排序树 280 9.2.2 平衡二叉树 283 9.3 B-树的基本概念及其基本操作、B 树的基本概念 286 9.3.1 B-树(B 树)的基本概念 286 9.3.2 B-树的基本操作 288 9.3.3 B 树的基本概念 292 9.4 散列表 293 9.4.1 散列表的概念 293 9.4.2 散列表的建立方法以及冲突解决方法 293 9.4.3 散列表的性能分析 297 ▲真题仿造 298 真题仿造答案与解析 298 习题 真题精选 299 习题答案 真题精选答案 304 10 章 考研中某些算法的分治法解释 318
### 回答1: Python提供了两种主要的循环结构:`for`循环和`while`循环。 ### for循环 `for`循环用于遍历一个可迭代对象(如列表、元组、字符串等)中的所有元素。其基本语法如下: ```python for 变量 in 可迭代对象: 循环体语句 ``` 例如,遍历列表中的所有元素并打印: ```python my_list = [1, 2, 3, 4, 5] for i in my_list: print(i) ``` 输出结果为: ``` 1 2 3 4 5 ``` ### while循环 `while`循环用于在条件为真的情况下重复执行一段代码块。其基本语法如下: ```python while 条件: 循环体语句 ``` 例如,计算1到5的累加和: ```python i = 1 my_sum = 0 while i <= 5: my_sum += i i += 1 print(my_sum) ``` 输出结果为: ``` 15 ``` 需要注意的是,如果`while`循环条件永远为真,那么循环将无限执行下去。因此,需要在循环体内部通过某种方式修改循环条件,以便让循环在某个时刻结束。 ### 回答2: Python循环结构是一种控制程序重复执行的结构,它允许我们多次执行相同或类似的代码块,以便在不同的条件下处理数据或执行操作Python提供了两种主要类型的循环结构:for循环和while循环。 for循环用于遍历序列(如字符串、列表或元组)中的元素,或者用于根据一个范围内的数字来执行特定的操作。通过设定循环变量,我们可以逐个取出序列中的元素,然后在循环体内对其进行处理。 例如,我们可以使用for循环来遍历一个列表,并对其中的元素进行累加计算: ```python num_list = [1, 2, 3, 4, 5] sum = 0 for num in num_list: sum += num print(sum) # 输出结果为15 ``` while循环则在满足一定条件时重复执行代码块,只要条件为True,循环就会一直执行。通过不断更新循环条件,我们可以控制循环的运行次数。 例如,我们可以使用while循环计算斐波那契数列的前n个数字: ```python n = 10 a, b = 0, 1 count = 0 while count < n: print(a) a, b = b, a + b count += 1 ``` 以上代码会输出斐波那契数列的前10个数字。 通过合理使用循环结构,我们可以编写出简洁高效的代码,处理大量数据或重复性操作。同时,我们也要注意循环条件的设置,避免造成死循环或其他意想不到的问题。 ### 回答3: Python循环结构是用于重复执行特定代码块的一种控制结构Python提供了两种主要的循环结构:for循环和while循环。 for循环是一种遍历集合或者序列的循环结构。它以一定次数循环执行代码块,循环次数取决于集合或者序列的长度。在for循环中,我们可以使用range()函数生成一个指定范围的数字序列,也可以直接遍历列表、元组、字符串等可迭代对象。在每一次循环中,for循环会将集合或者序列中的元素依次赋值给迭代变量,然后执行相应的代码块。 while循环是一种在指定条件为真的情况下重复执行代码块的循环结构。与for循环不同的是,while循环循环次数取决于循环条件是否为真。在每一次循环开始之前,循环条件会被判断一次,如果为真则执行代码块,否则跳出循环。在while循环中,我们可以使用break语句提前跳出循环,也可以使用continue语句跳过当前循环,直接进入下一次循环循环结构是编程中非常重要的一部分,它可以帮助我们处理重复性的任务,提高代码的复用性和效率。在使用循环结构时,我们需要注意循环条件的设置,以免陷入死循环。另外,我们还可以结合条件判断语句if来对循环进行细致的控制,实现更加灵活多样的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值