Python中while循环的基本用法

系统 1845 0

Python中while循环的基本用法_第1张图片

文 | 天罡君

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中while循环的基本用法_第2张图片

注:表情包中不是python代码

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

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

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

Python中while循环的基本用法_第3张图片

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’时才打印它:

Python中while循环的基本用法_第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’又不是’退出’,则程序会将用户输入信息原样输出。

Python中while循环的基本用法_第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 语句的情况下)。

Python中while循环的基本用法_第6张图片

这个程序不断让用户输入想吃的菜名,直到用户输入’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 
              
                +=
              
              
                1
              
              
                if
              
               current_number 
              
                %
              
              
                2
              
              
                ==
              
              
                0
              
              
                :
              
              
                continue
              
              
                print
              
              
                (
              
              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循环的基本用法_第7张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论