热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python循环语句代码逐行详解:while、for、break和continue

来源:大数据DT本文约3200字,建议阅读9分钟循环语句是指重复执行同一段代码块,通常用于遍历集合或者累加计算。Python中的循环语句有

来源:大数据DT

本文约3200字,建议阅读9分钟

循环语句是指重复执行同一段代码块,通常用于遍历集合或者累加计算。Python中的循环语句有while语句、for语句。

01 while循环

循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。

while(表达式):    …else:    …

while循环的执行过程:当循环表达式为真时,依次执行while中的语句。直到循环表达式的值为False,程序的流程转到else语句。其中else子句可以省略,表达式两侧的括号也可以省略。

注意:while循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。

下面这段代码演示了while循环的使用。程序首先要求输入5个数字,然后依次输出这5个数字。

# while循环numbers &#61; input("输入几个数字&#xff0c;用逗号分隔&#xff1a;").split(",")print(numbers)x &#61; 0while x < len(numbers):    # 当x的值小于输入字数的个数的时候&#xff0c;执行循环内容        print (numbers[x])    x &#43;&#61; 1                  # 一个循环结束时给x加1

代码说明&#xff1a;

  • 第2行代码使用input()捕获输入。按照提示输入5个数字&#xff0c;并用逗号分隔。input()根据输入的逗号&#xff0c;生成一个列表。

  • 第3行代码输出列表numbers的内容。

  • 第4行代码定义变量x的值为0。

  • 第5行代码循环列表numbers。

  • 第6行代码输出列表中第x&#43;1个数字的值。

  • 第7行代码&#xff0c;每次循环使变量x增1。

下面【例3-6】中的这段代码演示了else子句在while循环中的使用。当变量x的值大于0时&#xff0c;执行循环&#xff0c;否则输出变量x的值。

例3-6.py&#xff1a;

# 带else子句的while循环x &#61; float(input("输入x的值&#xff1a;"))   # 接收用户输入的数字并转换为float类型i &#61; 0while(x  !&#61; 0):                  # Python 3中的不等于不再使用<>&#xff0c;一律使用!&#61;    if(x > 0):        x -&#61; 1                  # 如果x大于0&#xff0c;则减1    else:        x &#43;&#61; 1                 # 如果x小于0&#xff0c;则加1    i &#61; i &#43; 1    print( "第%d次循环&#xff1a;%f" %(i, x))else:    print ("x等于0&#xff1a;", x)

代码说明&#xff1a;

  • 第2行代码输入变量x的值。

  • 第3行代码定义变量i&#xff0c;变量i表示循环次数。

  • 第4行代码&#xff0c;给出循环条件x !&#61; 0。如果x不等于0&#xff0c;则执行第5行代码&#xff1b;否则&#xff0c;执行else子句的内容。

  • 第5行代码&#xff0c;判断变量x的值是否大于0。

  • 第6行代码&#xff0c;如果x的值大于0&#xff0c;则每次循环都减1。

  • 第7行代码&#xff0c;判断变量x的值是否小于0。

  • 第8行代码&#xff0c;如果x的值小于0&#xff0c;则每次循环都加1。

  • 第9行代码&#xff0c;每次循环使变量i的值加1。 

  • 第11行代码&#xff0c;循环结束&#xff0c;else子句输出变量x的值。输出结果&#xff08;假设输入数字为0&#xff09;&#xff1a;x等于0:0。

在使用循环语句时&#xff0c;应注意循环表达式的布尔值&#xff0c;避免出现死循环。死循环是指循环条件永远为真的循环。例如&#xff1a;

i &#61; 1while i > 0:     # i永远大于0    i &#61; i &#43; 1    print(i)

这段代码就是一个死循环&#xff0c;变量i的值永远都大于0。

02 for循环

for循环用于遍历一个集合&#xff0c;依次访问集合中的每个项目。for循环的格式如下所示。

for 变量 in 集合&#xff1a;    …else&#xff1a;    …

for…in…循环的执行过程&#xff1a;每次循环从集合中取出一个值&#xff0c;并把该值赋值给变量。集合可以是元组、列表、字典等数据结构。其中else子句可以省略。

注意&#xff1a;for循环中的else子句也属于循环的一部分&#xff0c;最后一次循环结束后将执行else子句。

for…in…循环通常与range()函数一起使用&#xff0c;range()返回一个列表&#xff0c;for…in…遍历列表中的元素。range()函数的声明如下&#xff1a;

class range(object) range(stop) -> range objectrange(start, stop[, step]) -> range object

代码说明&#xff1a;

range()返回一个range对象&#xff0c;列表的元素值由3个参数决定&#xff1a;参数start表示列表开始的值&#xff0c;默认值为0&#xff1b;参数stop表示列表结束的值&#xff0c;该参数不可缺少&#xff1b;参数setp表示步长&#xff0c;即每次递增或递减的值&#xff0c;默认值为1。

下面【例3-7】中的这段代码遍历range()生成的列表&#xff0c;过滤出正数、负数和0。

例3-7.py&#xff1a;

# for in语句for x in range(-1, 2):    if x > 0:         print ("正数&#xff1a;",x)    elif x &#61;&#61; 0 :         print ("零&#xff1a;",x)    else:        print ("负数&#xff1a;",x)else:    print ("循环结束")

代码说明&#xff1a;

  • 第2行代码遍历range(-1,2)生成的列表。range(-1,2)返回的3个数字分别为-1、0、1。每次循环结束&#xff0c;变量x的值依次为-1、0、1。

  • 第3行代码判断变量x的值是否大于0。

  • 第4行代码输出正数的值。输出结果为“正数&#xff1a;1”。

  • 第5行代码判断变量x的值是否等于0。

  • 第6行代码&#xff0c;输出结果为“零&#xff1a;0”。

  • 第8行代码&#xff0c;输出负数的值。输出结果为“负数&#xff1a;-1”。

  • 第9行代码并没有结束for循环&#xff0c;else子句执行后循环才结束。输出结果为“负数&#xff1a;-1”。

在C、Java语言中&#xff0c;支持如下结构的for语句。

for(表达式1; 表达式2; 表达式3) 语句块

Python不支持这样的for循环。如果需要编写类似功能的循环&#xff0c;可以使用while循环。例如&#xff1a;

x &#61; 0while x < 5:    print(x)    x &#61; x &#43; 2

while循环的写法比较琐碎&#xff0c;需要比较判断。因此&#xff0c;对此也可以使用for循环&#xff0c;借助range()函数来实现。例如&#xff1a;

for x in range(0, 5, 2):    print (x)

代码说明&#xff1a;

输出的数字在&#xff3b;0,5&#xff09;这个区间&#xff0c;不包括5。每次循环结束&#xff0c;x的值加2。输出结果&#xff1a;

024

这里只用了两行代码就实现了传统for循环。如果要用条件表达式作为循环的条件&#xff0c;可以构造range()函数来实现。

03 break和continue语句

break语句可以使程序跳出循环语句&#xff0c;从而执行循环体之外的程序&#xff0c;即break语句可以提前结束循环。例如&#xff0c;模拟switch分支结构使用了break语句。

operator &#61; "&#43;"x &#61; 1y &#61; 2for case in switch(operator):   # switch只能用于for... in...循环中    if case(&#39;&#43;&#39;):        print (x &#43; y)        break    if case(&#39;-&#39;):        print (x - y)        break    if case(&#39;*&#39;):        print (x * y)        break    if case(&#39;/&#39;):        print (x / y)        break    if case():                      # 默认分支        print ("")

代码说明&#xff1a;

第7行代码中使用了break。当变量operator的值为“&#43;”&#xff0c;则执行表达式x &#43; y&#xff0c;然后中断switch分支结构&#xff0c;后面的case分支都不会执行。此时输出结果为3。后面的break作用相同。当匹配到某个case后&#xff0c;程序将跳出switch。

如果第一个case不使用break子句&#xff0c;程序将输出两个值&#xff0c;分别是3和-1。因为执行完输出表达式x &#43; y后&#xff0c;分支结构并没有中断&#xff0c;程序将流转到下面一个case。然后继续计算表达式x – y的值&#xff0c;遇到后面的break语句才退出分支结构。break语句在循环结构中也有类似的作用。【例3-8】中的这段代码将从0到99中查找用户输入的值。

例3-8.py&#xff1a;

x &#61; int(input("输入x的值&#xff1a;"))y &#61; 0for y in range(0, 100):    if x &#61;&#61; y:        print ("找到数字&#xff1a;", x)        breakelse:    print("没有找到")

代码说明&#xff1a;

  • 第1行代码捕获用户输入的值&#xff0c;并把该值转换为int类型&#xff0c;赋值给变量x。

  • 第2行代码定义一个变量y&#xff0c;变量y用于暂存需要遍历的列表的值。

  • 第3行代码使用for…in…循环遍历range(0, 100)返回的列表。range(0, 100)的返回值为0、1、2、…、99。

  • 第4行代码判断输入的值是否等于列表中的值。如果条件成立&#xff0c;输出查找到的数字&#xff0c;并立即退出循环。循环结束&#xff0c;后面的else子句将不会被执行。

  • 第7行代码&#xff0c;当没有找到输入的值时&#xff0c;else子句后面的代码将被执行。

注意&#xff1a;break语句不能运行在循环体或分支语句之外&#xff0c;否则&#xff0c;Python解释器将提示如下错误。

SyntaxError: &#39;break&#39; outside loop

continue语句也是用来跳出循环的语句&#xff0c;但是与break不同的是&#xff0c;使用continue语句不会跳出整个循环体&#xff0c;只是跳出当前的循环&#xff0c;然后继续执行后面的循环。

x &#61; 0for i in [1,2,3,4,5]:    if x &#61;&#61; i:    continuex  &#43;&#61; iprint("x的值为", x)  

代码说明&#xff1a;

  • 第1行代码将x赋值为0。

  • 第2行代码使用for...in...语句遍历列表[1,2,3,4,5]。

  • 第3行代码将x与i进行比较&#xff0c;如果x与值i相等&#xff0c;则执行第4行的continue语句&#xff0c;停止当前循环&#xff0c;即不再执行第5行代码&#xff0c;继续执行下一个循环。

  • 第6行代码打印出最终的结果&#xff0c;输出为12。

关于作者&#xff1a;黄传禄&#xff0c;高级讲师、管理软件开发工程师、数据库库系统工程师、信息系统管理工程师。有10多年的一线教学经验和高端培训经验&#xff0c;出版多部技术专著&#xff0c;获得多个软件著作权。

本文摘编自《零基础学Python》&#xff08;第2版&#xff09;&#xff0c;经出版方授权发布。

编辑&#xff1a;黄继彦



推荐阅读
author-avatar
sj_Ford
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有