本文以Python3以上为学习基础。

目录

1、使用循环的第一原则

2、while循环

2.1 while 和 循环控制语句(break、continue、pass)

3、for循环

3.1 range函数用法

3.2 for循环可以遍历的项目

3.3 for 和 循环控制语句(break、continue、pass)

4、循环的嵌套

4.1 for 循环里面嵌套 for 循环

4.1.1 for循环嵌套示例——乘法口诀表

4.2 while 循环里面嵌套 while循环

4.2.1 while循环嵌套示例——乘法口诀表

4.3 for 循环和 while 循环的嵌套。

4.3.1 for循环里面嵌套while循环——乘法口诀表

4.3.2 while循环里面嵌套for循环——乘法口诀表

5、while…else

6、for…else


循环语句允许我们执行一个语句或语句组多次。

Python里面提供了三种循环方式:

  • while 循环:在给定的判断条件为 true 时执行循环体,否则退出循环体。
  • for 循环:重复执行语句
  • 嵌套循环:while 循环 和 for循环 之间的嵌套

除此之外,如果我们想再循环执行过程中更改语句执行的顺序,就可以使用循环空值语句。

Python里面提供了三个循环控制语句:

  • break 语句
  • continue 语句
  • pass 语句

下面我们一个一个的看。


1、使用循环的第一原则

首先是看循环。

我们使用循环的时候,一定要明确一个原则。

任何使用循环的情况,第一步考虑的是如何退出循环。

我们在使用循环的时候,如果不能退出循环,当你的循环程序中涉及到打开文件、使用或者创建内存……等等一系列操作的时候,你无限的循环操作,最终就出现内存泄漏,文件句柄泄露……等等一系列严重的问题。

因此一定要明确这个原则:第一步就是考虑循环退出条件。 (这个原则是编程前辈教我的。)


下面我们看三个循环:while、for、循环嵌套

2、while循环

我们先看while循环的语法格式:

while 条件:语句1

和条件语句一样的道理:判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。

语句1 就是我们要执行的循环语句,可以是单个语句或语句块。

我们先看看while循环的简易流程图:

这里我在图中加了一个条件改变。你为了退出循环,一定要改变条件,让条件满足退出。这样循环才能退出。

我们下面验证以下:

上面例子可以清楚的结合流程图看到:我们循环打印数字1-9。

我们的思路就是:

  • 第一步:考虑循环退出条件,即 a < 10
  • 第二步:为了让退出条件【a<10】满足,我们就需要每一次执行结束去改变a的值,即 a 去加一个值去改变他。但是加的这个值是多少呢?我们就要根据我们的需求【打印1-9】来看,同时a也是从1开始。因此每次对a加1就好了。所以我们的改变条件是:a+1
  • 第三步:实现我们的最终需求:打印1-9(print(a))

基于以上三步骤,我们的整体思路就定了。就可以成功编程了。

2.1 while 和 循环控制语句(break、continue、pass)

这时候我们突然有新的需求:

不能改变循环退出条件,我想对打印数字4,5,6的时候单独处理。

  • 数字4:不打印数字4,因为它是一个不吉利的数字。
  • 数字5:数字5的处理我还没想好呢,想好了再提需求。
  • 数字6:如果打印了数字6,不需要打印后面的数字了,因为我想最后的退出永远是美好的。

面对新的需求,如果按照上述的程序,我们一定会打印出数字4的,并且6以后的数字也会打印。同时我们也没有对数字5的处理流出空间。方便以后添加新的处理。

为了满足上面的需求,这时候就用到了Python中的循环控制语句:continue、break、pass

我们先看看Python的循环控制语句的含义:

控制语句 描述
break 语句 在循环语句执行过程中终止循环,并且跳出整个循环
continue 语句 在循环语句执行过程中终止当前循环,跳出该次循环。执行下一次循环。
pass 语句 pass是空语句,是为了保持程序结构的完整性。

可以看到:

  • break是把整个循环都退出——对应需求数字6(6以后的数字都不打印)
  • continue是退出这一次循环——对应需求数字4(不打印数字4)
  • pass是为了保持程序的完整——对应需求5(为以后的处理预留空间)

我们来试试看:

我们把每一部分单独拆出来看看:

  • 在 a==4 的时候,continue后的语句都不执行了(【continue测试语句】以及【数字4】都没有打印出来)

注意:在使用continue的时候一定要把条件改变的语句放在continue前面。

为什么?因为 continue 一定是continue以后的所有语句都不执行了。 跳出本次循环的含义是,当前循环从头开始执行。

我们看下面这个例子:

在 a==4的时候,执行了continue,下面的【continue测试语句】、【a += 1】和【print(a)】全部都没执行,也就是说最关键的循环退出条件语句【a += 1】永远不会继续执行,a==4 的情况永远卡死了。这就是死循环。

同样这完全不符合我们使用循环的原则:

任何使用循环的情况,第一步考虑的是如何退出循环。

在 a==4 的时候就根本无法退出循环。

因此,可以看到我的处理是,把【a += 1】放在continue之前,因为我们不打印数字4,所以【print(a)】放在了continue之后,不让它打印数字4。

  • 在 a==5 的时候,pass语句没有任何影响,如果我们有处理处理,我们可以随时加对应的处理。

  • 在 a==6 的时候,打印了数字6,我们用break直接跳出全部循环,不打印后面的数字。

可以看到这个打印的数字6,是在【a==6】这个条件里面【print(a)】打印的,后续的【break测试数字语句】、【print(a)】、以及后面数字7、8、9的循环处理全部没有打印。整个循环结束。


综合上面三部分的处理,最终我们把三部分整合在一起就是下面的代码:

我们可以看到,循环的每次打印出来的值,都换行了,这是因为print()函数原因,如果其他的输出方式。具体请参照:print函数详解


while循环以后,我们看for循环。

3、for循环

for循环的基本语法:

for 【迭代变量】 in 【序列项目】:语句1

可能你看不明白for循环的语法含义。

我们用下面的例子来分析:

上面例子可以看到。我们把tmp变量里面的每个字符都打印出来了。

所以说: for循环是遍历任何序列的项目,如一个列表或者一个字符串。

我们看看for循环的工作方式:

  1. tmp变量引用的是"zxc"这个str类型的数据。
  2. 变量 i 通过 tmp 找到它所引用的对象 "zxc" ,因为 str类型 的数据属于序列类型,因此能够进行索引,于是就按照索引顺序,从第一字符开始,依次获得该字符的引用。
  3. 当 i = "z" 的时候,执行 print(i) ,打印出了字母z,结束之后循环第二次,让 i="x",然后执行print(i),打印出字母x,如此循环下去,一直到最后一个字符c被打印出来,循环自动结束

还记得我们说过的循环的原则吗?

任何使用循环的情况,第一步考虑的是如何退出循环。

但是for循环的循环是自动结束的,但是for循环的对象是序列项目,因此我们瑞出循环的条件是对序列项目操作。

可能你觉得这样没意义,但是我跟人觉得坚持这个原则是编程好习惯,并且,你在使用其他语言,比如C++的时候,C++里面的for循环,迭代变量是需要你自己去手动加1或者其他操作的。


我们回到for循环的例子中。

因为我们在访问序列元素的时候是可以通过使用索引(偏移量),得到序列对象的某个元素。

所以,for循环同样可以利用相同的方式:

可以看到是相同的结果,我们看看它的工作方式:

  1. len(hello)得到 tmp 引用的字符串 "zxc" 的长度,为3
  2. range(len(tmp),就是 range(3),也就是 [0, 1, 2],对应这"zxc"每个字母索引。这里应用了一个新的函数 range(),关于它的用法,下面就会讲到。
  3. 【for i in range(len(tmp))】,就相当于【for i in [0,1,2]】,让 i 依次等于列表中的各个值。当i=0 时,打印 tmp[0],也就是第一个字符z。然后顺序循环下去,直到最后一个 i=2 为止。

其实上面例子就是对列表的循环遍历。

下面我们看看range()函数的用法。

3.1 range函数用法

注意:range函数是Python的内置函数,也就是说这个range名字不能乱改,独一无二。

关于内置函数,后续再讲解。

下面我们看看range函数的语法格式和参数含义:

range(start,stop[,step])
  • start:开始数值,默认为0,也就是如果不写这项,就是认为start=0
  • stop:结束的数值,必须要写的。
  • step:变化的步长,默认是1,也就是不写,就是认为步长为1。坚决不能为0

我们直接上示例,一看就懂:

看到这个返回结果是不是看不懂了?

没有错。因为我们学习是Python3为学习基础的。

在Python2.x中,range函数实际上返回了一个for循环将遍历的列表。

在Python3.x中,range函数是它自己的类型,实际上是一个生成器函数,因此当for循环执行时,数字会动态生成。

不过没关系,我们用列表把这些数字接出来就好了。

这次我们看看示例:

Python2 的情况:(图源网络)

Python3 的情况:

上面例子,可以很清楚的看懂range函数。

这时候我们看看下面这种情况:

我们按照range函数的格式分析一下:

range(-6) 按照range函数格式划分:

 range(start=0,step=1,stop=-6)

第一个值是0;

第二个值是start+1*step,将上面的数代入,应该是1。但是最后一个还是-6,显然出现问题了。

但是Python这里没有报错,返回了空列表。

报错和返回结果,是两个含义,虽然返回的不是我们要的。应该如何修改呢?

我们让它反方向去增长就可以了。

比如我们要生成1-100的序列,直接用下面的方法就可以。

range(1,100)

说完range,我们继续回到循环语句。

如果你忘了我们说哪里了,就看下下面这个例子:

 for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

根据定义可以看到,for循环是可以循环任何有序列的项目,那么,到底有哪些是有序列的项目呢?

3.2 for循环可以遍历的项目

我们一个一个看。

(1)字符串:可以遍历

(2)列表:可以遍历

(3)集合:可以遍历

 (4)元组:可以遍历

(5)字典:也可以遍历

可以看到,字典遍历出来的结果是键值对里面的键。

但是我们利用for循环遍历字典的时候,用的是下面的方法:

这种方法一定要牢记,很常用。

其实就是利用获得字典键、值的函数:items、iteritems、keys、iterkeys、values、itervalues,通过这些函数得到的是键或者值的列表,来遍历。

我个人喜欢用的 items()函数,所以这里就只是介绍items函数的用法。其他的感兴趣可以自己研究。


我们前面说了循环控制语句:break、continue、pass。

这些在for循环中依旧可以使用。

3.3 for 和 循环控制语句(break、continue、pass)

前面讲了循环控制语句,所以我们回顾一下。

控制语句 描述
break 语句 在循环语句执行过程中终止循环,并且跳出整个循环
continue 语句 在循环语句执行过程中终止当前循环,跳出该次循环。执行下一次循环。
pass 语句 pass是空语句,是为了保持程序结构的完整性。

还是之前相同的需求:

不能改变循环退出条件,我想对打印数字4,5,6的时候单独处理。

  • 数字4:不打印数字4,因为它是一个不吉利的数字。
  • 数字5:数字5的处理我还没想好呢,想好了再提需求。
  • 数字6:如果打印了数字6,不需要打印后面的数字了,因为我想最后的退出永远是美好的。

直接上代码:

简单明了。

4、循环的嵌套

循环的嵌套就是一个循环体里面嵌入另一个循环。有三种情况,我们一个一个看。

4.1 for 循环里面嵌套 for 循环

语法格式:

for 【迭代变量】 in 【序列项目】:for 【迭代变量】 in 【序列项目】:语句1语句2

直接上示例,一看就懂:

遍历九次 zxc,每次遍历结果都是 z,x,c。

解释一下整个流程:

i = 1 时候,遍历一次zxc,即 j 从 0-3,直到zxc全部遍历结束。然后执行 i = 2,同样等 j 从 0-3全部遍历结束,执行i=3……知道结束。

也就是外循环一次,内循环全部执行结束,直到外循环全部执行结束。

4.1.1 for循环嵌套示例——乘法口诀表

我们直接上典型的循环嵌套案例:乘法口诀表

因为外循环一次,内循环全部执行结束,外循环全部执行结束,整个循环才能结束。

所以第一步:决定谁在内循环,谁是外循环。  

我们分析一下乘法口诀表:

1x1=1
1x2=2    2x2=4
1x3=3    2x3=6    3x3=9
1x4=4    2x4=8    3x4=12    4x4=16
1x5=5    2x5=10    3x5=15    4x5=20    5x5=25
1x6=6    2x6=12    3x6=18    4x6=24    5x6=30    6x6=36
1x7=7    2x7=14    3x7=21    4x7=28    5x7=35    6x7=42    7x7=49
1x8=8    2x8=16    3x8=24    4x8=32    5x8=40    6x8=48    7x8=56    8x8=64
1x9=9    2x9=18    3x9=27    4x9=36    5x9=45    6x9=54    7x9=63    8x9=72    9x9=81

这不就决定了外循环是右边红框的值,内循环是左边绿色下划线的值。

因此就有了代码:

但是呢,我们清楚的看到没有按照乘法口诀表来排版,因此,我们来排版一下。

这样我们的结果就完成了。

这是完整的代码:

for i in range(1,10):  #等价于range(1,10,1),就是从1-9,就是红框的数字,要执行九次。for j in range(1,i+1): #等价于绿色下划线的数字,直到等于红框数字,内循环执行一次结束,又因为Python中是右边数字不包含,所以i+1,print(j,"*",i,"=",j*i,sep = "",end = " ") #计算乘法口诀。print() #相当于每行执行结束我们输出一个换行符(\n),等价于:print("\n")

这是结果:

4.2 while 循环里面嵌套 while循环

语法格式:

while 条件1:while 条件2:语句2语句1

和for循环一样,直接上示例。

遍历六次字符串zxc。

和for循环一样: 外循环一次,内循环全部执行结束,外循环全部执行结束,整个循环才能结束。

4.2.1 while循环嵌套示例——乘法口诀表

同样经典案例:乘法口诀表。

乘法口诀表就不分析了。for循环嵌套时候分析过了。右边是数字是外循环,左边的数字是内循环。

所以直接上代码:

while循环是不是代码看上去更容易理解。

代码如下:

i = 1
while i < 10:j = 1while j <= i:print(j,"*",i,"=",j*i,sep = "",end = " ")j += 1print()i += 1

结果图:

4.3 for 循环和 while 循环的嵌套。

其实和 for 循环嵌套或者 while 循环嵌套是一样的。

循环嵌套永远遵守一个原则:外循环一次,内循环全部执行结束,外循环全部执行结束,整个循环才能结束。

语法格式:

# for循环里面嵌套while循环
for 【迭代变量】 in 【序列项目】:while 条件1:语句1语句2# while循环里面嵌套for循环
while 条件1:for 【迭代变量】 in 【序列项目】:语句2语句1

同样的直接上示例:乘法口诀表

4.3.1 for循环里面嵌套while循环——乘法口诀表

代码如下:

i = 1
while i < 10:for j in range(1,i+1):print(j,"*",i,"=",j*i,sep = "",end = " ")j += 1print()i += 1

4.3.2 while循环里面嵌套for循环——乘法口诀表

代码如下:

i = 1
while i < 10:for j in range(1,i+1):print(j,"*",i,"=",j*i,sep = "",end = " ")j += 1print()i += 1

循环的嵌套总结:

唯一原则:外循环一次,内循环全部执行结束,外循环全部执行结束,整个循环才能结束。

遇到问题第一步:判断谁是内循环,谁是外循环。


除此之外,再给大家分享一个新的。

5、while…else

有点类似if ... else。一个例子就看懂了。

6、for…else

一样的道理和if ... else一样。一个例子就看懂了。

总结:其实else就是在循环结束以后的处理。 


以上就是整个Python 的循环语句。如果有错误,请及时指出。

Python基础(十二)——循环语句相关推荐

  1. 20190508——python基础(if...in...循环语句、while循环、两种循环对比)

    二.python基础(if...in...循环语句.while循环.两种循环对比) 1.for...in...循环语句 1)for循环:空房间 # 空房间的学名叫[元素](item),因为英文是ite ...

  2. python教程循环语句,Python基础教程之循环语句(for、while和嵌套循环)

    循环可以用来重复执行某条语句,直到某个条件得到满足或遍历所有元素. 1 for循环 是for循环,可以把集合数据类型list.tuple.dict.set的元素遍历出来. (1)对list进行循环 c ...

  3. python基础之条件循环语句

    前两篇说的是数据类型和数据运算,本篇来讲讲条件语句和循环语句. 0x00. 条件语句 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语 ...

  4. Python 基础|while 循环语句

    今天分享的是 Python 基础中的 while 循环语句. 一.while 循环 一)语法形式 while 循环条件:       循环体 执行过程:如果满足循环条件,则执行循环体,否则跳出循环 二 ...

  5. python基础篇之循环语句(附加选车牌号小系统开发)

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https:// ...

  6. python基础之for循环语句

    python中的for循环,本质是对一个数据或数据集合体的遍历时,有多少个数据,就是会循环几次,这样理解后你会发现for循环是很简单的,并且你会发现它比C++和Java的for循环功能更多,而且还要语 ...

  7. python中的与或非_「Python基础」 While 循环语句

    Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句-- 执行语句可以是单个语句或语句 ...

  8. [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...

  9. [Python学习] 专题二.条件语句和循环语句的基础知识

            前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括:         1.条件语句:包括单分支.双分支和 ...

  10. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

最新文章

  1. 关于学习编程的一些看法
  2. POJ - 3160 Father Christmas flymouse DAG最长路
  3. Jedis与Redisson选型对比
  4. python全栈开发 * 08知识点汇总 * 180608
  5. 模板:半平面交(计算几何)
  6. Linux用find查找指定文件的操作
  7. 数据科学在风控中的应用-笔记
  8. 用VC实现GIS系统基本功能
  9. Linux系统管理和维护常用命令
  10. linux学习笔记:如何更改文件属性?
  11. Text Classification with BERT using Transformers for long text inputs
  12. IDEA自动生成serialVersionUID的设置
  13. flutter 自带方法获取视频缩略图
  14. [Markdown][HTML]特殊符号
  15. activiti 获取审批人员_activiti,根据任务id获取该任务节点配置的获选人或者获选组...
  16. mivo tv android,MivoTV Live Streaming
  17. jquery遍历数组的方式
  18. 《Head First Java(第2版)中文版》辅导书
  19. 还不到4折:赶紧来抢券啊!!!
  20. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]

热门文章

  1. 免费python编程自学网站-可以免费自学编程的12个网站
  2. Java学习——逻辑运算、双分支结构(if\else)
  3. AD中出现off grid pin问题的解决方法
  4. 能被9和11整除的数的特征
  5. 声音的频率与主观听感
  6. 【MySQL】MySQL高手是如何练成的?
  7. 知识管理对企业意味着什么
  8. 人工智能就业前景怎么样?
  9. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[2]Bitcoin的共识协议
  10. 一篇文章学会eggjs做后端服务及各种问题处理