第一阶段
1.1 初识python
选择python的原因:简单、易学、开发效率高
1.2 什么是编程语言
1.计算机只认识二进制0和1。
2.编程语言:用于人类与计算机进行交流的一种语言,通过编写编程语言的代码,去指挥计算机工作。它无法直接和计算机沟通,需要翻译工具(解释器or翻译器)将代码翻译成二进制,从而实现和计算机的顺畅沟通。
1.3 python环境安装
1.4 第一个python程序
1.代码中使用的双引号和括号必须是英文的符号。
2.打开命令提示符CMD,输入python并回车。然后,输入代码回车即可立即执行。
tip:使用快捷键win+R,在打开的运行框里面输入cmd回车,也可以打开命令提示符CMD。
1.5 python解释器
1.安装python环境,本质上就是安装python解释器程序。
2.python解释器程序,是一个计算机程序,用来翻译python代码,并提交给计算机执行。
3.如果我们要写多行代码一次性运行呢?
在E盘新建一个test.py文件,用记事本程序打开,输入内容。然后在”命令提示符“中使用python命令运行。
tip:如果想退出命令提示符内部,可以输入exit()或者直接重新打开cmd。
4.“.py文件”是python语言的代码文件,里面记录了python的代码。
5.python解释器程序在 <python安装目录>/python.exe。
1.6 python安装环境
1.python程序的开发有多种方式,常见的有:
(1)python解释器环境内,执行单行代码;
(2)使用python解释器程序,执行python代码文件;
(3)使用第三方IDE(集成开发工具),如pycharm软件,开发python程序。
2.python最常见的开发环境是pycharm软件,这是一个专用于python的开发软件。
3.pycharm以”工程“为单元,供我们使用。写代码之前需要先创建一个工程。
4.常用快捷键:
ctrl+d:复制当前行代码 ctrl+z:撤回上一步操作 ctrl+a:全选 ctrl+f:搜索
ctrl+c\v\x:复制、粘贴、剪切 shift+f6:重命名 ctrl+alt+s:打开软件设置
shift+alt+上\下:上\下移行 ctrl+shift+f10:运行当前代码文件
2.1 字面量
1.字面量:在代码中,被写下来的固定的值,称之为字面量。
2.常见的值类型:(6种)
类型 | 描述 | 说明 |
数字(number) | 支持 整数int 浮点数float 复数complex 布尔bool | 整数int:如10、-10 浮点数float:如13.14、-13.14 复数complex:如4+3j 布尔bool:表达现实生活中的逻辑,即真和假(true和false,true本质上记作数字1,false记作0) |
字符串(string) | 描述文本的一种数据类型 | 字符串由任意数量的字符组成 |
列表(list) | 有序的可变序列 | python中使用最频繁的数据类型,可有序记录一堆数据 |
元组(tuple) | 有序的不可变序列 | 可有序记录一堆不可变的python数据集合 |
集合(set) | 无序不重复集合 | 可有序记录一堆不重复的python数据集合 |
字典(dictionary) | 无序key-value集合 | 可有序记录一堆key-value型的python数据集合 |
字符串,又称文本,是由任意数量的字符(如中文、英文、各类符号、数字等)组成。
tip:在python中,字符串需要用双引号""包围起来。被双引号包围起来的都是字符串。
3.如何基于print语句完成各类字面量的输出:print(字面量)
2.2 注释
1.注释:在程序代码中对程序代码进行解释说明的文字。
2.作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,大大增强程序的可读性。
3.分类:
(1)单行注释:以#开头,#右边的所有文字当作说明,起辅助说明作用。一般用于对一行or一小部分代码解释。
tip:#号和注释内容一般用一个空格隔开。
(2)多行注释:以 一对三个双引号 引起来("""注释内容""")来解释说明一段代码的作用、使用方法。一般用于对python文件、类or方法进行解释。
2.3 变量
1.定义:在程序运行时,能存储计算结果or能表示值的抽象概念。简单来说,变量就是在程序运行时记录数据用的。
2.定义格式:变量名称=变量的值
每一个变量都有自己的名称,称之为 变量名,也就是说变量本身。
=:赋值,表示将等号右侧的值赋予左边的变量。
每一个变量都有自己存储的值(内容),称之为 变量值。
3.特征:变量的值可以改变。
4.print语句如何输出多份内容:print(内容1,内容2,......,内容n)
5.python中如何做减法运算:使用符号-
其他:加+、减-、乘*、除/
2.4 数据类型
1.如何验证数据类型:通过type()语句
2.语法:type(被查看类型的数据)
3.type()语句的使用方式:
(1)在print语句中,直接输出类型信息;
(2)用变量存储type()的结果(返回值);
(3)查看变量中存储的数据类型信息。
4.type可以输出类型,这是查看变量存储的数据的类型。因为变量无类型,但其存储的数据有。
字符串变量表示变量存储了字符串,而不是表示变量就是字符串。
2.5 数据类型转换
1.数据类型之间,在特定场景下,是可以相互转换的,如字符串转数字、数字转字符串等。
2.为什么要转换类型:
(1)从文件中读取的数字默认是字符串,需要转换成数字类型;
(2)input()语句默认结果是字符串,如需要数字也需要转换......
3.常见转换语句:
语句(函数) | 说明 |
int(x) | 将x转换成一个整数 |
flooat(x) | 将x转换成一个浮点数 |
str(x) | 将对象x转换成字符串 |
tip:同之前的type()语句一样,这三个语句都是带有结果的(返回值),可用print直接输出or用变量存储结果值。
4.任何类型都可以转换成字符串。
5.浮点数转整数会丢失精度,也就是丢失精度。
6.字符串不可以随意转换成数字,当字符串内只有数字才可以。
2.6 标识符
1.标识符是用户在编程时所使用的一系列名字,用于给变量、类、方法等命名。
2.命名规则:(3类)
(1)内容限定:只允许出现英文、中文(不推荐)、数字(不可以用在开头)、下划线_四类元素,其余任何内容都不允许;
(2)大小写敏感;
(3)不可使用关键字。
3.命名规范:
变量的命名规范:明了、简洁;多个单词组合变量名时,要使用下划线做分隔;英文字母全小写。
2.7 运算符
1.算术(数学)运算符:
运算符 | 描述 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 取整除(9.0//2.0输出结果4.0) |
% | 取余 |
** | 指数 |
2.赋值运算符:
运算符 | 描述 | 说明 |
= | 赋值运算符 | 把 等号右边的结果赋给左边的变量 |
复合赋值运算符:
运算符 | 描述 | 说明 |
+= | 加法赋值运算符 | c+=a等效于c=c+a |
-= | 减法赋值运算符 | c-=a等效于c=c-a |
*= | 乘法赋值运算符 | c*=a等效于c=c*a |
/= | 除法赋值运算符 | c/=a等效于c=c/a |
%= | 取模赋值运算符 | c%=a等效于c=c%a |
**= | 幂赋值运算符 | c**=a等效于c=c**a |
//= | 取整除赋值运算符 | c//=a等效于c=c//a |
2.8 字符串扩展
1.字符串的三种定义方式:
(1)单引号定义法:name='黑马'
(2)双引号定义法:name="黑马"
(3)三引号定义法:name="""黑马"""
三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接受它,它就是字符串;不使用变量接受它,就可以作为多行注释来使用。
2.字符串的引号嵌套:
如果想要定义的字符串本身就包含了单引号、双引号,可以使用以下方法:
(1)单引号定义法,可以内含双引号;
(2)双引号定义法,可以内含单引号;
(3)可以使用转移字符(\)来将引号解除效用,变成普通字符串。
3.如何完成字符串拼接:使用“+”来连接字符串变量or字符串字面量。
tip:无法与非字符串类型进行拼接。
4.多个变量占位,变量要用括号括起来并按照占位的顺序填入。
5.python中,支持非常多的数据类型占位。常用的以下三类:
格式符号 | 转化 |
%s | 将内容转换成字符串,放入占位位置 |
%d | 将内容转换成整数,放入占位位置 |
%f | 将内容转换成浮点型,放入占位位置 |
6.字符串格式化的语法: "%占位符"%变量
7.我们可以使用辅助符号"m.n"来控制数据的宽度和精度
m:控制宽度,要求数字(很少使用),设置的宽度小于数字本身,不生效
n:控制小数点精度,要求是数字,会进行小数点的四舍五入
示例:
%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
%5.2f:表示将宽度控制为5,将小数点精度设置为2 小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35
%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35
tip:如果m比数字本身宽度还小,此时的m不生效
8.字符串快速格式化:f"内容{变量}"
快速格式化不理会类型,也不精度控制,适合对精度没有要求的时候快速使用。
9.表达式:一条具有明确执行结果的代码语句
10.如何格式化表达式:f"(表达式)" "%s\%d\%f" % (表达式、表达式、表达式)
2.9 数据输入(input语句)
1.数据输入:input 数据输出:print
2.使用input()语句可以从键盘上获取输入,使用一个变量接受or存储input语句获取的键盘输入数据即可。
3.input()语句可以在要求使用者输入内容前,输出提示内容(在input括号内直接填入)。
4.无论键盘输入什么类型的数据,获取到的数据都是字符串类型。
3.1 布尔类型和比较运算符
1.布尔类型进行判断,只有两个结果:是、否。
字面量:True表示真/是/肯定;False表示假/否/否定。
定义变量存储布尔类型数据:变量名称=布尔类型字面量
布尔类型不仅可以自行定义,还可以通过计算得到,也就是使用比较运算符进行比较运算得到布尔类型的结果。
3.比较运算符:
运算符 | 描述 | 示例 |
== | 判断内容是否相等,满足为True,不满足为False | 如a=3,b=3,则(a == b) 为 True |
!= | 判断内容是否不相等,满足为True,不满足为False | 如a=1,b=3,则(a != b) 为 True |
> | 判断运算符左侧内容是否大于右侧 满足为True,不满足为False | 如a=7,b=3,则(a > b) 为 True |
< | 判断运算符左侧内容是否小于右侧 满足为True,不满足为False | 如a=3,b=7,则(a < b) 为 True |
>= | 判断运算符左侧内容是否大于等于右侧 满足为True,不满足为False | 如a=3,b=3,则(a >= b) 为 True |
<= | 判断运算符左侧内容是否小于等于右侧 满足为True,不满足为False | 如a=3,b=3,则(a <= b) 为 True |
3.2 if语句的基本格式
1.程序中的判断:
if 要判断的条件:
条件成立时,要做的事情
tip:第二行四格空格缩进,可按tab键。
2.判断语句的结果必须是布尔类型True或False。
当if判断条件结果为True时,代码会被执行;
当if判断条件结果为True时,代码不会被执行。
3.3 if else组合判断语句
1.if else语句:
if 条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
......
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
......
2.if else语句的注意点:
(1)else后,不需要判断条件;
(2)和if的代码块一样,else的代码块同样需要4个空格作为缩进。
3.4 if elif else组合使用的语法
1. 程序中的判断:
if 条件1:
条件1满足应做的事情
条件1满足应做的事情
......
elif 条件2:
条件2满足应做的事情
条件2满足应做的事情
......
elif 条件N:
条件N满足应做的事情
条件N满足应做的事情
......
else:
所有条件都不满足应做的事情
所有条件都不满足应做的事情
......
tip:elif语句可以写多个。
2.判断是互斥且有顺序的。
(1)满足1将不会理会2和3;
(2)满足2,将不会理会3;
(3)123均不满足时,进入else;
(4)else也可省略不写,效果等同于3个独立的if判断。
3.5 判断语句的嵌套
1.嵌套判断语句可以应用在以下场景:多个并列条件+满足前置条件才进行二次判断。
2.许多逻辑判断都是嵌套的、多层次的,可以自由组合if elif else。
3.基本语法格式:
if 条件1:
满足条件1时要做的事情1
满足条件1时要做的事情2
......
if 条件1:
满足条件2时要做的事情1
满足条件2时要做的事情2
......
注:第二个if属于第一个if内。只有第一个if满足条件,才会执行第二个if。
4.嵌套的关键在于空格缩进。通过空格缩进来决定语句之间的层次关系。
4.1 while循环的基础应用
1.循环在程序中同判断一样,广泛存在,是非常多功能实现的基础。同样,循环也是程序中最基础、最核心的逻辑功能。
2.基本语法格式:
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
......
注:(1)while的条件需得到布尔类型,True表示继续循环,False表示结束循环;
(2)需要设置循环终止的条件,如i+=1配合i<100就能确保100次后停止,否则将无限循环;
(3)空格缩进和if判断一样都需要设置。
4.2 while循环的嵌套应用
1.基本语法格式:
while 条件1:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
......
while 条件2:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
......
2.循环语句的嵌套要注意空格缩进。基于空格缩进来决定层次关系。
3.注意条件的设置,避免出现无限循环,除非真的需要无限循环。
4.默认print语句输出内容自动换行。在print语句中,加上end=”即可实现输出不换行。
5.制表符\t可以使多行字符串进行对齐。
4.3 for循环的基础用法
1.while循环和for循环的区别:
while循环的循环条件是自定义的,自行控制循环条件;
for循环是一种“轮询”机制,是对一批内容进行“逐个处理”。for循环就是将“待办事项”逐个完成的循环机制。
2.for循环的基本语法格式:
for 临时变量 in 待处理数据集(序列):
循环满足条件时执行的代码
tip:语法中的“待处理数据集”严格来说是“序列类型”。
3.for循环将字符串的内容依次取出,因此又被称为“遍历循环”。所以,理论上讲,python中的for循环无法构建无限循环(被处理的数据集不可能无限大)。
4.for循环无法定义循环条件,只能被动去除数据处理。循环内的语句需要有空格缩进。
5.序列类型指其内容可以一个个一次取出的一种类型,包括字符串、列表、元组等等。
6.range语句的功能:获得一个简单的数字序列
语法1:range(num) 获取一个从0开始、到num结束的数字序列(不含num本身)
语法2:range(num1,num2) 获取一个从num1开始、到num2结束的数字序列(不含num2本身)
语法3:range(num1,num2,step) 获取一个从num1开始、到num2结束的数字序列(不含num2本身);数字之间的步长以step为准(step默认为1)
7.思考:print语句是否能够访问到变量i
for i in range(5):
print(i)
print(i)
规范上:不允许;实际上:可以
8.在for循环语法中,将数据集(序列)中取出的数据赋值给临时变量。
在编程规范中,临时变量的作用范围(作用域)只限定在for循环内部。如果在for循环外部访问临时变量,实际上可以访问到,但在编程规范上是不允许、不建议的。如需访问临时变量,可以预先在循环外部定义它。
4.4 for循环的嵌套使用
1.基本语法格式:
for 临时变量 in 待处理数据集(序列):
循环满足条件时应做的事情1
循环满足条件时应做的事情2
循环满足条件时应做的事情3
......
for 临时变量 in 待处理数据集(序列):
循环满足条件时应做的事情1
循环满足条件时应做的事情2
循环满足条件时应做的事情3
......
2.while循环和for循环可以相互嵌套使用。
4.5 continue和break
1.continue和break用于对循环进行临时跳过和直接结束。
2.continue关键字:用于中断本次循环,直接进入下一次循环。可用在for循环和while循环中,效果一致。应用场景:在循环中,因某些原因,临时结束本次循环。
for i in range(1,100)
语句1
continue
语句2
tip:在以上代码中,语句2是不会执行的。在循环内,遇到continue就结束本次循环,进行下一次。
3.continue在嵌套循环中的应用:
continue只控制它所在的循环临时中断。
for i in range(1,100):
语句1
for j in range(1,100):
语句2
continue
语句3
语句4
4.break关键字:用于直接结束循环。可用在for循环和while循环中,效果一致。
for i in range(1,100)
语句1
break
语句2
语句3
tip:在以上代码中,执行了语句1后,就直接执行语句3。在循环内,遇见break后就结束循环了。
5.break在嵌套循环中的应用:
break只控制它所在的循环结束。
for i in range(1,100):
语句1
for j in range(1,100):
语句2
break
语句3
语句4
6.continue的作用:中断所在循环的当次执行,直接进入下一次。
break的作用:直接结束所在的循环。
tip:在嵌套循环中,continue和break只能作用在所在的循环上,无法对上层循环起作用。
5.1 函数的初体验
1.函数是组织好的、可重复使用的,用来实现特定功能的代码段。
2.len()是python内置的函数,是提前写好的、可重复使用、实现统计长度这一特定功能的代码段。
tip:int()、print()、str()、input()等都是python的内置函数。
3.学习、使用函数的原因:为了得到一个针对特定需求、可重复利用的代码段,提高程序的复用性,减少重复性代码,提高开发效率。
4.使用函数的好处:
(1)将功能封装在函数内,可供随时随地重复利用;
(2)提高程序的复用性,减少重复性代码,提高开发效率。
5.2 函数的基础定义语法
1.函数的定义:
def 函数名(传入函数):
函数体
return 返回值
tip:传入函数、return 返回值两部分可省略;但()不可以省略。
2.函数的调用:函数名(参数)
tip:函数必须先定义后调用。
5.3 函数的参数
1.传入参数的功能:在函数进行计算时,接受外部(调用时)提供的数据。
2.语法解析:
(1)函数定义中,提供的x、y,称之为:形式参数(形参),表示函数声明将要使用两个参数。参数之间使用逗号进行分隔。
(2)函数调用中,提供的2、45,称之为:实际参数(实参),表示函数执行时真正使用的参数值。传入时,按照顺序传入数据,使用逗号进行分隔。
(3)函数的参数数量不受限制,使用逗号分隔开。传入参数时,要和形式参数一一对应,逗号隔开。
5.4 函数的返回值定义语法
1.返回值是程序中函数完成事情后,最后给调用者的结果。
2.返回值的语法格式:
def 函数(参数...)
函数体
return 返回值
变量=返回值
tip:如上,变量就能接收到函数的返回值。
3.返回值语法:通过return关键字,就能调用者返回数据。
4.函数体在遇到return后就结束了,所以写在return后面的代码并不会执行。
5.5 函数返回值之None类型
1.python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>。无返回值的类型,实际上就是返回了None这个字面量。
2.None类型的应用场景:
None作为一个特殊的字面量 ,用于表示:空、无意义,其有非常多的应用场景。
(1)用在函数无返回值上;
(2)用在if判断上:在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理;
(3)用于声明无内容的变量上:定义变量,但暂时不需要变量有具体值,可以用None来代替。
# 暂不赋予变量具体值
name = None
5.6 函数的说明文档
1.函数的说明文档:辅助理解函数。
2.说明文档的语法:通过多行注释的形式,对函数进行说明解释。
def func(x,y):
"""
函数说明
:param x:形参x的说明
:param y:形参y的说明
:return:返回值的说明
"""
函数体
return 返回值
tip:内容应该写在函数体之前。
3.在pycharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档。
5.7 函数的嵌套调用
1.函数嵌套调用:指一个函数里面调用了另外一个函数。
2.执行流程:函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容。
5.8 变量在函数中的作用域
1.变量作用域是指变量的作用范围(变量在哪里可用,在哪里不可用),主要分为两类:局部变量和全局变量。
2.局部变量:
定义:局部变量是定义在函数体内部的变量,即只在函数体内部生效。
作用:在函数体内部,临时保存数据,即当函数调用完成后,即销毁局部变量。
3.全局变量:
定义:全局变量指的是在函数体内、外都能生效的变量。
tip:如果有一个数据在函数A和函数B中都要使用,可以将这个数据存储在一个全局变量。
4.使用global关键字,可以在函数内部声明变量为全局变量。
6.1 数据容器入门
1.数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素。每一个元素可以是任意类型的数据,如字符串、数字、布尔等。
2.数据容器根据特点的不同,如:是否支持重复元素、是否支持修改、是否有序等,可分为5类,分别是:列表list、元组tuple、字符串str、集合set、字典dict。它们各有特点,但都能满足可容纳多个元素的特性。
6.2 列表list
1.基本语法:
# 字面量
[元素1,元素2,元素3,元素4,......]
# 定义变量
变量名称=[元素1,元素2,元素3,元素4,......]
#定义空列表
变量名称=[ ]
变量名称=list( )
tip:列表内的每一个元素,称之为元素。
(1)以[ ]作为标识;(2)列表内每一个元素之间用逗号隔开。
2.列表可以一次性存储多个数据,且可以是不同的数据类型,支持嵌套。
3.如何从列表中取出特定位置的数据:使用下标索引。格式:列表[ ]。
列表中的每一个元素都有其位置的下标索引,从前向后的方向,从0开始,依次递增。
反向索引,也就是从后向前:从-1开始,依次递减(-1、-2、-3......)。
4.如果列表是嵌套的列表,同样支持下标索引。
tip:如果要取第三个元素,可以写成:列表[1][0]。
5.在使用下标索引时,要注意下标索引的取值范围,超过范围则无法取出元素,并且会报错。
6.列表除了可以定义、使用下标索引获取值以外,也提供了一系列的功能:插入元素、删除元素、清空列表、修改元素、统计元素个数等等。这些功能可称之为:列表的方法。
7.函数是一个封装的代码单元,可以提供特定功能。在python中,如果将函数定义为class(类)的成员,那么函数会被成为:方法。如下:
函数:def add(x,y):
return x+y
方法:class Student:
def add(self,x,y):
return x+y
方法和函数功能一样,有传入参数、返回值,只是两者的使用格式不一样:
函数的使用:num=add(1,2)
方法的使用:student=Student()
num=student.add(1,2)
8.列表的方法:
(1)列表的查询功能(方法):
查找某元素的下标
功能:查找指定元素在列表中的下标,如果找不到就报错ValueError。
语法:列表.index(元素) index就是列表对象(变量)内置的方法(函数)。
(2)列表的修改功能(方法):
1)修改特定位置(索引)的元素值
语法:列表[下标] = 值
使用以上语法,直接对指定下标(正向、反向)的值进行修改(重新赋值)。
2)插入元素
语法:列表.insert(下标,元素) 在指定的下标位置,插入指定的元素
(3)追加元素
语法1:列表.append(元素) 将指定的单个元素追加到列表的尾部
语法2:列表.extend(其他数据容器) 将其他数据容器的内容取出,依次追加到列表尾部。
(4)删除元素
语法1:del 列表[下标]
语法2:列表 .pop(下标)
(5)删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
(6)清空列表内容
语法:列表.clear()
(7)统计某元素在列表内的数量
语法:列表.count(元素)
(8)统计列表内有多少元素
语法:len(列表) 可以得到一个int型数字,表示列表内的元素数量
9.列表的特点有:
(1)可以容纳多个元素(上限是2**63-1);
(2)可以容纳不同类型的元素(混装);
(3)数据是有序存储的(有下标序号);
(4)允许重复数据存在;
(5)可以修改(增加or删除元素等)。
10.数据容器可以存储多个元素,那么就会有需求从容器内依次取出元素进行操作。将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。
11.列表的遍历:
(1)使用while循环:
如何在循环中取出列表的元素:列表[下标]。
如何控制循环条件:定义一个变量表示下标,从0开始;循环条件为 下标值<列表的元素数量。
(2)使用for循环:
对比while循环,for循环更适合对列表等数据容器进行遍历。
语法:for 临时变量 in 数据容器:
对临时变量进行处理
上述语法表示:从容器内,依次取出元素并赋值到临时变量上。在每一个循环中,我们都可以对临时变量(元素)进行处理。
12.while循环和for循环的对比:
while循环和for循环都是循环语句,但细节不同。for循环更简单,while更灵活。
(1)在循环控制上:
while循环可以自定循环条件,并自行控制;
for循环不可以自定循环条件,只可以一个个从容器内取出数据。
(2)在无限循环上:
while循环可以通过条件控制做到无限循环;
for循环理论上不可以,因为被遍历的容器容量不是无限的。
(3)在使用场景上:
while循环适用于任何想要循环的场景;
for循环适用于遍历数据容器的场景or简单的固定次数循环场景。