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

01 while循环

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

1 while(表达式):

2 …

3 else:

4 …

while循环的执行过程:当循环表达式为真时,依次执行while中的语句。直到循环表达式的值为False,程序的流程转到else语句。其中else子句可以省略,表达式两侧的括号也可以省略。注意:while循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。

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

1 # while循环

2 numbers = input("输入几个数字,用逗号分隔:").split(",")

3 print(numbers)

4 x = 0

5 while x < len(numbers): # 当x的值小于输入字数的个数的时候,执行循环内容

6 print (numbers[x])

7 x += 1 # 一个循环结束时给x加1

【代码说明】第2行代码使用input()捕获输入。按照提示输入5个数字,并用逗号分隔。input()根据输入的逗号,生成一个列表。

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

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

第5行代码循环列表numbers。

第6行代码输出列表中第x+1个数字的值。

第7行代码,每次循环使变量x增1。

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

【例3-6.py】

1 # 带else子句的while循环

2 x = float(input("输入x的值:")) # 接收用户输入的数字并转换为float类型

3 i = 0

4 while(x != 0): # Python 3中的不等于不再使用<>,一律使用!=

5 if(x > 0):

6 x -= 1 # 如果x大于0,则减1

7 else:

8 x += 1 # 如果x小于0,则加1

9 i = i + 1

10 print( "第%d次循环:%f" %(i, x))

11 else:

12 print ("x等于0:", x)

【代码说明】第2行代码输入变量x的值。

第3行代码定义变量i,变量i表示循环次数。

第4行代码,给出循环条件x != 0。如果x不等于0,则执行第5行代码;否则,执行else子句的内容。

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

第6行代码,如果x的值大于0,则每次循环都减1。

第7行代码,判断变量x的值是否小于0。

第8行代码,如果x的值小于0,则每次循环都加1。

第9行代码,每次循环使变量i的值加1。

第11行代码,循环结束,else子句输出变量x的值。输出结果(假设输入数字为0):x等于0:0。

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

1 i = 1

2 while i > 0: # i永远大于0

3 i = i + 1

4 print(i)

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

02 for循环

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

1 for 变量 in 集合:

2 …

3 else:

4 …

for…in…循环的执行过程:每次循环从集合中取出一个值,并把该值赋值给变量。集合可以是元组、列表、字典等数据结构。其中else子句可以省略。注意:for循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。

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

class range(object)

range(stop) -> range object

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

【代码说明】

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

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

【例3-7.py】

1 # for in语句

2 for x in range(-1, 2):

3 if x > 0:

4 print ("正数:",x)

5 elif x == 0 :

6 print ("零:",x)

7 else:

8 print ("负数:",x)

9 else:

10 print ("循环结束")

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

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

第4行代码输出正数的值。输出结果为“正数:1”。

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

第6行代码,输出结果为“零:0”。

第8行代码,输出负数的值。输出结果为“负数:-1”。

第9行代码并没有结束for循环,else子句执行后循环才结束。输出结果为“负数:-1”。

在C、Java语言中,支持如下结构的for语句。

for(表达式1; 表达式2; 表达式3)

语句块

Python不支持这样的for循环。如果需要编写类似功能的循环,可以使用while循环。例如:

1 x = 0

2 while x < 5:

3 print(x)

4 x = x + 2

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

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

2 print (x)

【代码说明】

输出的数字在[0,5)这个区间,不包括5。每次循环结束,x的值加2。输出结果:

0

2

4

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

03 break和continue语句

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

1 operator = "+"

2 x = 1

3 y = 2

4 for case in switch(operator): # switch只能用于for... in...循环中

5 if case('+'):

6 print (x + y)

7 break

8 if case('-'):

9 print (x - y)

10 break

11 if case('*'):

12 print (x * y)

13 break

14 if case('/'):

15 print (x / y)

16 break

17 if case(): # 默认分支

18 print ("")

【代码说明】

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

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

【例3-8.py】

1 x = int(input("输入x的值:"))

2 y = 0

3 for y in range(0, 100):

4 if x == y:

5 print ("找到数字:", x)

6 break

7 else:

8 print("没有找到")

【代码说明】第1行代码捕获用户输入的值,并把该值转换为int类型,赋值给变量x。

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

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

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

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

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

SyntaxError: 'break' outside loop

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

1 x = 0

2 for i in [1,2,3,4,5]:

3 if x == i:

4 continue

5 x += i

6 print("x的值为", x)

【代码说明】第1行代码将x赋值为0。

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

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

第6行代码打印出最终的结果,输出为12。

如有错误或其它问题,欢迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。

更多相关开源技术文章,请持续关注民工哥知乎技术专栏。

我是民工哥,一个爱折腾的IT技术老司机,欢迎关注我,我们一起学习,共同成长!!

python循环一段代码_Python循环语句代码详解:while、for、break相关推荐

  1. python count函数代码_python count函数用法详解_后端开发

    fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...

  2. python全栈之巅_Python 迭代器、生成器详解 - Python全栈之巅

    迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 使用迭代器的优点 对于 ...

  3. python定时任务每月1号_Python 定时任务框架 APScheduler 详解

    APScheduler 最近想写个任务调度程序,于是研究了下 Python 中的任务调度工具,比较有名的是:Celery,RQ,APScheduler. Celery:非常强大的分布式任务调度框架 R ...

  4. python内置函数教程_Python内置函数详解

    此文参考python文档,然后结合自己的理解,写下来,一方面方便自己,让自己好好学习,顺便回忆回忆:另一方面,让喜欢的盆友也参考一下. 经查询,3.6版本总共有68个内置函数,主要分类如下: 数学运算 ...

  5. 以python程序调用的系统_python 系统调用的实例详解

    python 系统调用的实例详解 本文将通过两种方法对python 系统调用进行讲解,包括python使用CreateProcess函数运行其他程序和ctypes模块的实例, 一 python使用Cr ...

  6. python语言案例教程 单元测试_python单元测试unittest实例详解

    本文实例讲述了python单元测试unittest用法.分享给大家供大家参考.具体分析如下: 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情 ...

  7. python数据科学课后答案_Python数据科学-技术详解与商业实践-第五讲作业

    作者:Ben,著有<Python数据科学:技术详解与商业实践>.<用商业案例学R语言数据挖掘>.<胸有成竹-数据分析的SAS EG进阶>作者.2005年进入数据科学 ...

  8. python字符串处理编程实例_Python字符串处理实例详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

  9. python处理excel实例编程_python读取Excel实例详解

    本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下 1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 ...

  10. python re 筛选数据 求和_python求和函数sum()详解

    python求和函数 sum()详解 今天在学习的过程中,误用sum()函数,我又去查了查python sum()函数才恍然大悟. 我本来想算几个Int值相加的和,本以为很简单的事情,结果却很悲伤,例 ...

最新文章

  1. Android如何使用读写cookie的方法
  2. 网站SEO优化该如何提高用户粘度?
  3. 从零开始开发JVM语言(十三)代码生成与ASM
  4. spring boot+shiro+vue前后端分离时,获取不到session
  5. java web mvc 拆分_JAVA WEB初接触——简单的MVC架构
  6. 连接关键词用什么符号
  7. 合并多个wordpress到一个
  8. Hdoj 1847.Good Luck in CET-4 Everybody! 题解
  9. (转) 基于Arcgis for Js的web GIS数据在线采集简介
  10. ES6 学习笔记 (1)
  11. install ubuntu from a usb disk
  12. UVA - 208 Firetruck
  13. android 存储空间监控,浅谈 Android 内存监控(中)
  14. Liferay 启动过程分析16-初始化插件
  15. ubuntu 14.04 安装minidwep-gtk
  16. 蓝牙低功耗音频技术 -- 1 背景和遗产
  17. mysql file direct_DirectAdmin的Mysql优化
  18. android 11如何剪裁上传图片
  19. 在linux上安装微信
  20. RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022

热门文章

  1. 数据中心能耗支出飙升,我们是否真的无能为力?
  2. svn基本常见操作设置
  3. 运营商数据治理实践-郭岳
  4. ×××须避开的高薪杀手
  5. cratedb导入json文件
  6. 【bzoj3530】[Sdoi2014]数数 AC自动机+数位dp
  7. Portal for ArcGIS 资源承载数据类型
  8. jQuery 之 $(this) 出了什么问题?
  9. 上线随想之2011-03-30
  10. 2009年即将过去,准备迎接2010