Python循环语句代码详解:while、for、break
1 while循环
循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。
while(表达式):
…
else:
…
while循环的执行过程:当循环表达式为真时,依次执行while中的语句。直到循环表达式的值为False,程序的流程转到else语句。其中else子句可以省略,表达式两侧的括号也可以省略。

注意:while循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。
下面这段代码演示了while循环的使用。程序首先要求输入5个数字,然后依次输出这5个数字。
# while循环
numbers = input("输入几个数字,用逗号分隔:").split(",")
print(numbers)
x = 0
while x < len(numbers): # 当x的值小于输入字数的个数的时候,执行循环内容
print (numbers[x])
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】
# 带else子句的while循环
x = float(input("输入x的值:")) # 接收用户输入的数字并转换为float类型
i = 0
while(x != 0): # Python 3中的不等于不再使用<>,一律使用!=
if(x > 0):
x -= 1 # 如果x大于0,则减1
else:
x += 1 # 如果x小于0,则加1
ii = i + 1
print( "第%d次循环:%f" %(i, x))
else:
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。
在使用循环语句时,应注意循环表达式的布尔值,避免出现死循环。死循环是指循环条件永远为真的循环。例如:
i = 1
while i > 0: # i永远大于0
ii = i + 1
print(i)
这段代码就是一个死循环,变量i的值永远都大于0。
2. for循环
for循环用于遍历一个集合,依次访问集合中的每个项目。for循环的格式如下所示。
for 变量 in 集合:
…
else:
…
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】
# for in语句
for x in range(-1, 2):
if x > 0:
print ("正数:",x)
elif x == 0 :
print ("零:",x)
else:
print ("负数:",x)
else:
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循环。例如:
x = 0
while x < 5:
print(x)
xx = x + 2
while循环的写法比较琐碎,需要比较判断。因此,对此也可以使用for循环,借助range()函数来实现。例如:
for x in range(0, 5, 2):
print (x)
【代码说明】
输出的数字在[0,5)这个区间,不包括5。每次循环结束,x的值加2。输出结果:
0
2
4
这里只用了两行代码就实现了传统for循环。如果要用条件表达式作为循环的条件,可以构造range()函数来实现。
3. break和continue语句
break语句可以使程序跳出循环语句,从而执行循环体之外的程序,即break语句可以提前结束循环。例如,模拟switch分支结构使用了break语句。
operator = "+"
x = 1
y = 2
for case in switch(operator): # switch只能用于for... in...循环中
if case('+'):
print (x + y)
break
if case('-'):
print (x - y)
break
if case('*'):
print (x * y)
break
if case('/'):
print (x / y)
break
if case(): # 默认分支
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】
x = int(input("输入x的值:"))
y = 0
for y in range(0, 100):
if x == y:
print ("找到数字:", x)
break
else:
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语句不会跳出整个循环体,只是跳出当前的循环,然后继续执行后面的循环。
x = 0
for i in [1,2,3,4,5]:
if x == i:
continue
x += i
print("x的值为", x)
【代码说明】
- 第1行代码将x赋值为0。
- 第2行代码使用for...in...语句遍历列表[1,2,3,4,5]。
- 第3行代码将x与i进行比较,如果x与值i相等,则执行第4行的continue语句,停止当前循环,即不再执行第5行代码,继续执行下一个循环。
- 第6行代码打印出最终的结果,输出为12。
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!
Python循环语句代码详解:while、for、break的更多相关文章
- JavaScript 循环语句入门详解
JavaScript Switch 语句 语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: n 与 case ...
- python golang中grpc 使用示例代码详解
python 1.使用前准备,安装这三个库 pip install grpcio pip install protobuf pip install grpcio_tools 2.建立一个proto文件 ...
- Android java程序员必备技能,集合与数组中遍历元素,增强for循环的使用详解及代码
Android java程序员必备技能,集合与数组中遍历元素, 增强for循环的使用详解及代码 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 For ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- Python 列表(List)操作方法详解
Python 列表(List)操作方法详解 这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下 列表是Python中最基本 ...
- Python模块调用方式详解
Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...
- Python对Excel操作详解
Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl ...
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
本文介绍多层感知机算法,特别是详细解读其代码实现,基于python theano,代码来自:Multilayer Perceptron,如果你想详细了解多层感知机算法,可以参考:UFLDL教程,或者参 ...
随机推荐
- Docker-maven-plugin + Dockerfile + Arthas实现应用诊断
一.前言 我们的微服务响应生产环境出现一个功能响应时间过慢,对Prometheus监控 Http Request进行分析发下该功能调用的后端接口响应时间平均在30秒以上,分析源码接口有mysql查询. ...
- 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计
摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...
- Leetcode 周赛#202 题解
本周的周赛题目质量不是很高,因此只给出最后两题题解(懒). 1552 两球之间的磁力 #二分答案 题目链接 题意 有n个空篮子,第i个篮子位置为position[i],现希望将m个球放到这些空篮子,使 ...
- 4 种高可用 RocketMQ 集群搭建方案!
背景 笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能. 随着产品迭代,业务功能越来越多后慢慢也要面对高并发.业务解耦.分布式事务等问题,所 ...
- Windows 的这款工具,有时让我觉得 Mac 不是很香
上次写了个 cheat.sh 在手,天下我有,小伙伴们热情高涨,觉得这是一个没有杂质的好工具:也有小伙伴抱怨说对 Windows 用户不是特别友好 (其实用 curl API 是没啥问题的).为了「雨 ...
- MySQL 连接为什么挂死了
声明:本文为博主原创文章,由于已授权部分平台发表该文章(知乎.云社区),可能造成发布时间方面的困扰. 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感到头疼,一来这类问题有 ...
- Linux之centos包管理【rpm】、【yum】、【tar】
rpm包是二进制格式,无需编译安装便可使用,tar包是源码格式,需要编译安装才可使用 rpm包管理: rpm:redhat package manager,红帽的包管理器,其主要的操作参数有如下: - ...
- Mac用brew更新完python2.7后无法找到虚拟环境
Mac下virtualenv遇到dyld: Library not loaded: @executable_path/../.Python Referenced ...问题的解决措施 find ~/. ...
- moviepy音视频剪辑:AudioClip的max_volume方法报TypeError: bad operand type for abs(): ‘list‘错
☞ ░ 前往老猿Python博文目录 ░ 一.环境 操作系统:win7 64位 moviepy:1.0.3 numpy:1.19.0 Python:3.7.2 二.应用代码及报错信息 应用代码 imp ...
- 第二十九章、containers容器类部件QFrame框架部件详解
一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架 ...