热门标签 | 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;黄继彦



推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
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社区 版权所有