python中的while循环语句_python while循环语句用法

python中的while循环语句_python while循环语句用法文|天罡君while和for都可以使程序重复执行某一段代码(又称作循环体),区别是for循环用于针对集合中的每一个元素都一个代码块,而while循环在表达式为True的情况下会不断地执行,直到指定条件不满足为止。今天我们一起来学习下while关键字的使用。1.while循环简介while在英语中的解释是:当…时候。在Python中的语法是:while表达式:循环体…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

python中的while循环语句_python while循环语句用法


文 | 天罡君

whilefor都可以使程序重复执行某一段代码(又称作循环体),区别是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<=5python就接着运行这个循环。由于1小于5,因此Python打印1,并将num加1,使其为2;由于2小于5,因此Python打印2,并将num加1,使其为3,以此类推。一旦num大于5,循环将停止,整个程序也将结束运行。

运行结果:

1
2
3
4
5

有人可能看到这会有点懵:已经有for循环了,为啥又搞出个while循环?

python中的while循环语句_python while循环语句用法


注:表情包中不是python代码

可以简单的这样理解:for循环主要用于那些我们知道循环次数的循环,如,遍历整个列表,我们知道循环次数就是列表中元素的个数。而while循环主要用于那些我们不知道具体循环多少次的循环,人们常说人生就像一个程序,写成代码的话,我们人生中发生的所有事情都在while 活着:循环的循环体中,我们是不知道一个人到底能活多长时间的,只能用while

当然,有些循环用forwhile都可以实现。

其实,你每天使用的程序很可能就包含着while循环。例如,游戏程序就在一个大的while循环中,在玩家退出时停止运行。用while循环能让程序在用户没有让它停止之前一直运行,这点是for循环做不到的。

python中的while循环语句_python while循环语句用法

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’时,可以终止程序运行:

图1-3

输入’quit’以后确实终止了程序,但它将’quit’也打印了出来。这其实无关痛痒,然而精益求精的我们是不能忍受的,怎么能让它在输入’quit’时直接退出,输入其他信息时原样返回呢?

prompt = "\n输入一些内容,系统将原样返回给你:"
prompt += "\n键入 'quit' 结束此程序运行。"
message = ''
while message != 'quit':
    message = input(prompt)
    if message != 'quit':
        print(message)

我们只要让程序在打印信息前做个简单的检查,仅在消息不是’quit’时才打印它:

图1-4

可以清楚地看到,这回输入’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 = False
    elif message == '退出':
        active = False
    else:
        print(message)

我们把active作为标志位,并且初始值给它True,这里肯定得是True,不然程序无法进入循环,就更别提执行循环体代码了。

然后使用两条if语句来检查变量message的值。如果用户输入的是’quit’,我们就把变量active设置成False,如果用户输入的是’退出’,我们也把变量active设置成False

至于为什么不把两个if判断条件写在一起?

其一,这样就和把message != 'quit' or message != '退出'直接写在while后面没啥区别了;

其二,是想让小伙伴们认识到,在真实的项目中,只要有一个条件不满足,就可以直接把active置为False,程序会直接停止运行,因为不同的条件下逻辑可能会不一样,代码块自然也会不同,所以无法把两个if判断条件写在一起。

如果用户输入的既不是’quit’又不是’退出’,则程序会将用户输入信息原样输出。

图1-5

1.4使用break退出循环

如果你要立即退出while循环,不在运行循环体中余下的代码,也不管while后面跟的表达式是真是假,可以使用break语句。

例如,我们写个点菜程序,让用户输入TA想吃的菜。在这个程序中,我们可以在用户输入’quit’后使用break语句立即退出while循环:

prompt = "\n请输入您想吃的菜名:"
prompt += "\n键入'quit'以退出程序。"

while True:
    food = input(prompt)

    if food == 'quit':
        break
    else:
        print("我想吃", food)

我们将True作为while的循环判断条件,因此这程序理论上会不断运行下去(在没有break语句的情况下)。

图1-6

这个程序不断让用户输入想吃的菜名,直到用户输入’quit’,程序执行break语句,退出循环。

需要注意,break语句的作用就是跳出循环(一层循环),这在for循环体中也是适用的哦。

1.5在循环体中使用continue

continue的意思是继续。

Python中使用continue语句跳过当前循环体中的剩余语句,然后继续进行下一轮循环。

注意:continuebreak的区别在于,前者跳出当前(本次)循环,而后者跳出整个循环。二者既可用于while也可用于for

举个栗子,我们来打印从1~10中的奇数。

current_number = 0
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:
        continue
    print(current_number)

小伙伴们肯定有别的打印奇数的方法,这里主要是想用循环和continue来实现。

python中的while循环语句_python while循环语句用法

先定义变量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循环语句用法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170069.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 我手写了个SLAM算法!「建议收藏」

    我手写了个SLAM算法!「建议收藏」我手写了个SLAM算法!点击蓝色按钮,设置星标,第一时间获得文章推送哦1、前言前一段时间看过我文章的都知道,我打算写一个SLAM源码阅读的文章,然后,我就去读了Gmapping的源码,感受良多,不足的地方就是源码太乱了,阅读起来真的不香。于是就有了这篇文章,在我仔细阅读之后,我在源码的结构基础之上,进行大刀阔斧的删减和更改之后得到一个易于阅读的建图算法功能包,极大的降低了代码量,极大的提升了阅读体验。在这里将该算法功能包分享给大家,希望需要的朋友,善待它。之前文章链接:ps:为什么是gmappin

    2022年6月29日
    49
  • 逆波兰法表示的表达式_波兰表达式和逆波兰

    逆波兰法表示的表达式_波兰表达式和逆波兰根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1:输入:tokens = [“2″,”1″,”+”,”3″,”*”]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4″,”13″,”5″,”/”,”+”]输

    2022年8月9日
    11
  • 深度学习之softmax损失函数[通俗易懂]

    深度学习之softmax损失函数[通俗易懂]深度学习之softmax损失函数归一化向量的每个元素均大于0小于1,且和为1,所以可以将其看作归属各个类别的概率。损失函数可以看作真实类别的负对数概率,希望其越小。importnumpyasnpD=784K=10N=128#scores是分值矩阵,每行代表一个样本scores=np.random.randn(N,K)print(scores.shape)#样本标签y=np.random.randint(K,size=N)print(y.shape)#指数化分值矩

    2022年6月26日
    37
  • jsonObject_jsonobject.tobean

    jsonObject_jsonobject.tobeanJSONObject简介转自:http://blog.csdn.net/huangwuyi/article/details/5412500JSONObject与JSONArray的使用一、JAR包简介     要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:     1.commons-lang.jar     2.comm

    2025年11月27日
    6
  • 工作流引擎 Activiti 教程(非常详细)

    工作流引擎 Activiti 教程(非常详细)更多内容关注微信公众号:fullstack888一、工作流介绍1.1概念工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。1.2工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流…

    2022年7月21日
    40
  • Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」

    Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」网络客户端管理工具在Linux中,通常用网络客户端管理工具实现文件的下载与上传,主要有以下几种,分别为lftp工具,ftp工具,lftpget工具,wget工具,在centos7中,要尽量学会lftp,lftpget等工具,下面多这些工具的简单使用逐一介。lftp使用命令manlftp可查看其具体的使用方法,如果lftp工具未安装,使用yuminstalllftp命令进…

    2022年5月29日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号