美文网首页程序员Python入门
Python趣味入门5:循环语句while

Python趣味入门5:循环语句while

作者: 小牛叔 | 来源:发表于2020-03-23 21:24 被阅读0次

    任何语言都有循环语句,在Python里循环更是变化无穷,有基本的循环,有循环else语句,引伸出来的还有迭代器、推导式。

    1、While循环

    while 条件判断语句:
      子代码1
      子代码2
      子代码3
      …
      子代码N
    主代码1

    while语句的格式与if类似,子代码必须进行缩进4个空格,作用却是大不相同。当它执行第一次循环时,判断条件是否成立,如果条件成立,就从子代码1开始执行到子代码N,然后程序会回到while语句再次判断条件是否成立,如果成立就继续从子代码1开始执行,如果不成立就跳过子代码段,系统从主代码1开始往后执行。

    话说在North Kingdom北境国的北面夜王控制了塞外,曾经春夏交织,现在每天雪花连绵,似乎进入了无限循环状态。

    类似于永不停止的重复动作即无限循环,实现它需要在写条件判断语句时,直接写上永远为True的判断结果,简单直接使用True,以实现了无穷循环的功能,如下面的程序所示:

    >>> while True:
            print('下雪')
    下雪
    下雪
    下雪
    下雪
    下雪
    下雪
    (按下Ctrl+C来终止程序无穷运行)
    KeyboardInterrupt
        >>>
    

    身为北境守卫者的我 - 中文名雪诺(英文名Snow)决定越过长城北,解决掉夜王。国王Stannis请我在王宫500个最强壮的卫兵中,挑选10人同行,由于时间有限不可能全部面试500人为了公平,于是我决定由电脑随机挑出1个人,通过后即出队入选,这样重复多次直到10人选满为止。
    关于这个挑人程序,现在分析如下:

    • 首先定义队伍人数,初始值是500。
    • 面试后如选中一人,队伍中会少一个人。
    • 如果未选中,让其归队,队伍人数不会变化。
    • 无论上一次有没有选中,只需要在剩下的人数里再继续产生随机数(注意:并不是从原来整个500人中产生)。
    • 如果剩下的人数是490人就意味着10人已经选满,循环结束。
      至此逻辑已经很清楚了,看看您是不是已经把程序写出来了呢?

    本程序从500人的队伍里,随机挑出,如果满意就入选,不满意就归队

    import random  #使用随机数工具
    volunteer = 500
    while volunteer > 500-10: #当剩下的人数大于490时才继续面试
        test = random.randint(1,volunteer)
        if(input('还剩下'+ str(volunteer)+'人,这是随机挑选的第'+str(test)+'号,您满意么(y/n)?') == 'y'):
            volunteer -= 1 #入选后队伍就会少1人
    print('您已经选足了10个人!')
    
    

    上面程序使用了无限循环,为实现满足选定10人就退出的功能,在循环里进行了条件判断,满足条件退出Python,程序运行结果如下所示:

    还剩下500人,这是随机挑选的第329号,您满意么(y/n)?y
    还剩下499人,这是随机挑选的第113号,您满意么(y/n)?n
    还剩下499人,这是随机挑选的第176号,您满意么(y/n)?y
    还剩下498人,这是随机挑选的第243号,您满意么(y/n)?y
    还剩下497人,这是随机挑选的第315号,您满意么(y/n)?y
    还剩下496人,这是随机挑选的第413号,您满意么(y/n)?y
    还剩下495人,这是随机挑选的第375号,您满意么(y/n)?y
    还剩下494人,这是随机挑选的第440号,您满意么(y/n)?y
    还剩下493人,这是随机挑选的第389号,您满意么(y/n)?y
    还剩下492人,这是随机挑选的第388号,您满意么(y/n)?y
    还剩下491人,这是随机挑选的第231号,您满意么(y/n)?y
    您已经选足了10个人!

    在运行过程中第2次输入不满意n时,可以看到剩下的人数499并没有变化。

    在这里循环和判断都是之前讲过的内容,重点是下面的语句:

    import random

    这句话是告诉计算机,我马上要使用random模块,模块就是系统中提供高级功能的工具包。为什么要执行这条语句呢?主要是因为系统内置会提供一些功能,比如条件语句、判断语句、计算语句,为了节约内存不可能把所有功能都提供,所以当我们使用手边没有的工具时(比如本程序用的随机数)就要声明,好让程序加载到内存里。

    在下面的语句里,volunteer是变量表示剩下的人总数,randint前面介绍过后面有括号的都是函数执行,会返回从1到volunteer之间(也包括)任意随机数,代表抽出的号码,保存在test变量中。

    test = random.randint(1,volunteer)
    

    说明:当执行外部模块的函数,要用英文点.分隔。

    更多精彩的内容,可以加作者公众号,不走失。

    微信文章底部.png

    相关文章

      网友评论

        本文标题:Python趣味入门5:循环语句while

        本文链接:https://www.haomeiwen.com/subject/fasgyhtx.html