Python中while循环的基本用法
文 | 天罡君
while
和for
都可以使程序重复执行某一段代码(又称作循环体),区别是for
循环用于针对集合中的每一个元素都一个代码块,而while
循环在表达式为True
的情况下会不断地执行,直到指定条件不满足为止。
今天我们一起来学习下while
关键字的使用。
1.while循环简介
while在英语中的解释是:当…时候。
在Python中的语法是:
while 表达式:循环体
意味着,当表达式为True的时候,程序会一直执行循环体代码,直至表达式为False。
1.1使用while循环
最简单的while循环当属数数了。例如,下面的while
循环从1数到5:
num = 1
while num <= 5:print(num)num += 1
首先定义了变量num
并给其初始值1。接下来的while
循环被设置成这样:只要num
小于或等于5,就接着运行循环体代码。
循环体中的代码打印变量num
的值,再使用代码num+=1
(代码num=num+1的简写)将其值加1。
只要满足条件num<=5
,python就接着运行这个循环。由于1小于5,因此Python打印1,并将num
加1,使其为2;由于2小于5,因此Python打印2,并将num
加1,使其为3,以此类推。一旦num
大于5,循环将停止,整个程序也将结束运行。
运行结果:
1
2
3
4
5
有人可能看到这会有点懵:已经有for
循环了,为啥又搞出个while
循环?
注:表情包中不是python代码
可以简单的这样理解:for
循环主要用于那些我们知道循环次数的循环,如,遍历整个列表,我们知道循环次数就是列表中元素的个数。而while
循环主要用于那些我们不知道具体循环多少次的循环,人们常说人生就像一个程序,写成代码的话,我们人生中发生的所有事情都在while 活着:
循环的循环体中,我们是不知道一个人到底能活多长时间的,只能用while
。
当然,有些循环用for
和while
都可以实现。
其实,你每天使用的程序很可能就包含着while
循环。例如,游戏程序就在一个大的while
循环中,在玩家退出时停止运行。用while
循环能让程序在用户没有让它停止之前一直运行,这点是for
循环做不到的。
1.2让用户选择何时退出
可使用while
循环让程序在用户愿意时不断地运行,当用户想退出时就可以随时退出:
prompt = "\n输入一些内容,系统将原样返回给你:"
prompt += "\n键入 'quit' 结束此程序运行。"
message = ''
while message != 'quit':message = input(prompt)print(message)
我们定义了一条信息提示,告诉用户他有两个选择:要么输入一条消息,要么输入’quit’退出程序。
接下来我们创建了变量message
来接收用户输入的内容。Python执行while
语句时,需要将message
的值与’quit’进行比较。如果用户输入的不是’quit’,程序将打印出用户输入,否则将终止程序运行。
[外链图片转存失败(img-GPEwzuTm-1568168463339)(https://liuwynn.github.io/images/20190829/图1-2.png)]
我们向控制台输入的任何信息(除’quit’)都能得到一模一样的返回信息。
当我们键入’quit’时,可以终止程序运行:
输入’quit’以后确实终止了程序,但它将’quit’也打印了出来。这其实无关痛痒,然而精益求精的我们是不能忍受的,怎么能让它在输入’quit’时直接退出,输入其他信息时原样返回呢?
prompt = "\n输入一些内容,系统将原样返回给你:"
prompt += "\n键入 'quit' 结束此程序运行。"
message = ''
while message != 'quit':message = input(prompt)if message != 'quit':print(message)
我们只要让程序在打印信息前做个简单的检查,仅在消息不是’quit’时才打印它:
可以清楚地看到,这回输入’quit’之后程序没有返回’quit’给我们(可不是天罡君截图的时候故意没截下面噢)。
1.3更优雅的退出方式
前一个示例中,我们采用判断message!='quit'
是否为True的方式来决定程序是否继续循环执行。可有时影响程序是否继续执行的条件不止一个,如用户输入’quit’或’退出’中的任意一个都可以终止程序运行。
聪明的小伙伴会说那还不简单,我把判断条件换成:
message != 'quit' or message != '退出'
这样做到底可不可以呢?答案是可以的,但不是最好的或者说是不优雅的,我们写程序的偶尔可以追求下代码的品质嘛。
[外链图片转存失败(img-0jLPo772-1568168463345)(https://liuwynn.github.io/images/20190829/mingxue.jpg)]
更优雅的方式是使用标志。可能有小伙伴对这个名词感触不深,我们直接上新鲜滚烫的代码来感受一下。
prompt = "\n输入一些内容,系统将原样返回给你:"
prompt += "\n键入 'quit' 结束此程序运行。"
active = True
while active:message = input(prompt)if message == 'quit':active = Falseelif message == '退出':active = Falseelse:print(message)
我们把active
作为标志位,并且初始值给它True,这里肯定得是True,不然程序无法进入循环,就更别提执行循环体代码了。
然后使用两条if
语句来检查变量message
的值。如果用户输入的是’quit’,我们就把变量active
设置成False
,如果用户输入的是’退出’,我们也把变量active
设置成False
。
至于为什么不把两个if
判断条件写在一起?
其一,这样就和把message != 'quit' or message != '退出'
直接写在while
后面没啥区别了;
其二,是想让小伙伴们认识到,在真实的项目中,只要有一个条件不满足,就可以直接把active
置为False
,程序会直接停止运行,因为不同的条件下逻辑可能会不一样,代码块自然也会不同,所以无法把两个if
判断条件写在一起。
如果用户输入的既不是’quit’又不是’退出’,则程序会将用户输入信息原样输出。
1.4使用break退出循环
如果你要立即退出while
循环,不在运行循环体中余下的代码,也不管while
后面跟的表达式是真是假,可以使用break
语句。
例如,我们写个点菜程序,让用户输入TA想吃的菜。在这个程序中,我们可以在用户输入’quit’后使用break语句立即退出while
循环:
prompt = "\n请输入您想吃的菜名:"
prompt += "\n键入'quit'以退出程序。"while True:food = input(prompt)if food == 'quit':breakelse:print("我想吃", food)
我们将True
作为while
的循环判断条件,因此这程序理论上会不断运行下去(在没有break
语句的情况下)。
这个程序不断让用户输入想吃的菜名,直到用户输入’quit’,程序执行break
语句,退出循环。
需要注意,break
语句的作用就是跳出循环(一层循环),这在for
循环体中也是适用的哦。
1.5在循环体中使用continue
continue的意思是继续。
Python中使用continue
语句跳过当前循环体中的剩余语句,然后继续进行下一轮循环。
注意:continue
和break
的区别在于,前者跳出当前(本次)循环,而后者跳出整个循环。二者既可用于while
也可用于for
。
举个栗子,我们来打印从1~10中的奇数。
current_number = 0
while current_number < 10:current_number += 1if current_number % 2 == 0:continueprint(current_number)
小伙伴们肯定有别的打印奇数的方法,这里主要是想用循环和continue
来实现。
先定义变量current_number
并赋初值0,由于它小于10,Python进入while
循环。
进入循环后,变量current_number
在原数字上加1。
接下来,if
语句检查current_number
与2的求模运算结果(之前文章说过,结果为0说明是偶数,不为0说明是奇数)。
如果结果为0(偶数),就执行continue
语句,Python会忽略余下的代码,并返回到循环的开头。如果结果不为0(奇数),就执行循环体中剩余的代码,Python将会把这个数字打印出来。
1.6无限循环
初学者经常会把循环语句写成无限循环。
比如1~5数数:
x = 1
while x <= 5:print(x)x += 1
程序的循环终止条件是x<=5
,在循环体中每次x+=1
,循环体执行5次以后必然不满足循环条件,程序肯定是会正常终止的。
但我们初学者特别容易遗漏掉代码行x+=1
,导致程序进入死循环,没完没了的运行。
# 这个循环将不会终止
x = 1
while x <= 5:print(x)
上面代码x
初始值是1,但根本不会变,所以while
后面的循环条件永远成立,导致程序会一直打印1。
**友情提示:**如果你不小心写了个无限循环程序(没人可以保证自己不会犯错),可以按Ctrl+C
,也可关闭显示程序输出的终端来终止程序。
2.结语
这段时间忙着报道,没什么时间更新,请大家见谅啦。
上面只是介绍了while
的基本用法,没有涉及到对列表或字典的处理,要是大家喜欢看的话,可以扫码关注或私信给我留言,我们下期再见bye。
Python中while循环的基本用法相关推荐
- [转载] Python中while循环的基本用法
参考链接: Python while循环 文 | 天罡君 while和for都可以使程序重复执行某一段代码(又称作循环体),区别是for循环用于针对集合中的每一个元素都一个代码块,而while循环在表 ...
- python循环语句-详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...
- python的for语句-详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...
- python中readlines函数用法,python中read() readline()以及readlines()用法
我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python中for循环的代码_Python for循环及基础用法详解
Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串.列表.元组.字典.集合等序 ...
- python使用循环结构计算10_十二、 python中的循环结构
我们要计算1+2+3的时候,可以直接写出来,但是计算1+2+3+···+100的时候,就不能写了.如果计算1到1亿的和,全写出来就有点不现实了.为了让计算机能计算出1到1亿的和,这时候就需要循环结构了 ...
- 【循序渐进学Python】Python中的循环(一)——for循环(嵌套)与range函数
[循序渐进学Python]Python中的循环(一)--for循环(嵌套)与range函数 在前面博客中我们介绍了Python程序结构的三要素,其中就提到了循环,而今天我们就来看看for循环和for循 ...
- python中result的用法_关于Python中的列表理解及用法
在Python中,列表理解通常用于编写单行语句,这些语句通过可迭代对象进行迭代以创建新的列表或字典.本文首先介绍for循环如何在Python中工作,然后解释如何在Python中使用列表理解. Pyth ...
最新文章
- vue 用户拖拽窗口大小_VUE实战1:鼠标拖放改变窗口大小,后台管理界面
- C语言程序设计:现代方法(第2版)第三章全部习题答案
- 公钥和私钥的简单通俗说明
- 使用auditd监控Linux的文件变化
- 认识Linux 、安装虚拟机 、 安装centos7
- [控件] LabelView
- SAP CRM Reference类型下拉菜单里的值是从哪里取出的
- 行为设计模式:中介者
- 软件开发的核心问题是什么
- avr单片机动态数码管c语言,AVR单片机8位数码管显示的程序实现(两种方法介绍)...
- 台式电脑投影切屏快捷键_电脑投影切屏快捷键
- linux gpio管脚功能配置API
- 集成显卡和独立显卡的区别
- 【Android安全】priv-app 系统应用权限
- flutter 背景图片毛玻璃效果
- MFC、WTL、WPF、wxWidgets、Qt、GTK 对比
- OSI七层与TCP/IP五层网络架构详解
- 游戏运维的开始,这只是开始
- 四舍五入 java_Java中四舍五入
- python字典x in d_给定字典d,哪个选项对x in d的描述是正确的