Python程序设计案例课堂
上QQ阅读APP看书,第一时间看更新

5.4 循环控制语句

顾名思义,循环控制语句主要就是在满足条件的情况下反复执行某一个操作,循环控制语句主要包括while语句和for语句。

5.4.1 while语句

while语句是循环语句,也是条件判断语句。while语句语法格式如下:

        while判断条件:
            语句

同样需要注意冒号和缩进。下面通过一个案例来计算1~10的总和。

案例5-3】使用while循环语句(代码5.3.py)。

        n = 10
        sum = 0
        counter = 1
        while counter <= n:
            sum = sum + counter
            counter += 1

        print("1到%d之和为:%d"%(n, sum))

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.3.py
        1到10之和为:55

在本案例中,使用while循环语句计算1~10之和。用户需要特别注意的是,如果条件表达式一直为true,则while循环会进入无限循环中。无限循环应用也比较广泛,例如在处理服务器上客户端的实时请求时就非常有用。

【案例5-4】使用while无限循环(代码5.4.py)。

        aa = "真实客户"
        while aa=="真实客户" :  # 表达式永远为true
          name = str (input("请输入客户的名字:"))
          print ("你输入的名字是: ", name)

        print ("客户名称验证完毕!")

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.4.py
        请输入客户的名字:张丰年
        你输入的名字是:  张丰年
        请输入客户的名字:王蒙
        你输入的名字是:  王蒙
        请输入客户的名字:

在本案例中,使用while循环语句不停地实现用户输入的效果。如果用户想退出无限循环,可以使用Ctrl+C组合键。

举例如下:

        aa = "真实客户"
        while aa=="真实客户" : print ("客户永远是对的!")

        print ("客户名称验证完毕!")

保存并运行程序,当用户按Ctrl+C组合键,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.4.1.py
        客户永远是对的!
        客户永远是对的!
        客户永远是对的!
        客户永远是对的!
        客户永远是对的!
        客户永远是对的!
        客户永远是对的!
        Traceback (most recent call last):
          File "d:\5.4.1.py", line 2, in <module>
            while aa=="真实客户" : print ("客户永远是对的!")
        KeyboardInterrupt

while语句还可以和else语句配合使用,表示当while语句的条件表达式为false时,执行else的语句块。

【案例5-5】 while语句和else语句配合使用(代码5.5.py)。

        bb = 10
        while bb > 0:
          print (bb, "大于0")
          bb=bb -1
        else:
          print (bb, " 小于或等于0")

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.5.py
        10  大于0
        9  大于0
        8  大于0
        7  大于0
        6  大于0
        5  大于0
        4  大于0
        3  大于0
        2  大于0
        1  大于0
        0  小于或等于 0

在本案例中,把while语句和else语句配合使用,可以实现输出从10~0的数字,并判断每个输出的数字和0的关系。

5.4.2 for语句

for语句通常由两部分组成:一是条件控制部分;二是循环部分。for语句语法格式如下:

        for <variable> in <sequence>:
          语句
        else:
          语句

其中<variable>是一个变量名称,<sequence>则是一个列表。else语句运行的时机是当for语句都没有运行或是最后一个循环已经运行时。else语句是可以省略的。

下列案例打印变量n所有的值:

        >>> for n in [1,2,3,4,5]:
            print (n)

        1
        2
        3
        4
        5

下列案例打印变量t1、t2所有的值:

        >>> t = [(1,2), (3,4), (5,6)]
        >>> for t1, t2 in t:
            print (t1, t2)

        1 2
        3 4
        5 6

在该案例中,使用for语句,可以实现输出二维数组的功能。

如果想跳出循环,可以使用break语句,该语句用于跳出当前循环体。

【案例5-6】 for语句和break语句配合使用(代码5.6.py)。

        goods = ["冰箱", "洗衣机", "空调", "风扇", "电磁炉"]
        for gg in goods:
            if gg == "空调":
              print("商品中包含空调!")
              break
            print(gg)
        else:
            print("没有发现需要的商品!")
        print("商品搜索完毕!")

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.6.py
        冰箱
        洗衣机
        商品中包含空调!
        商品搜索完毕!

在本案例中,通过for语句和break语句的配合使用,可以实现搜索功能。从结果可以看出,当搜索到空调时,将跳出当前循环,对应的循环else块将不执行。

5.4.3 continue语句和break语句

1.continue语句

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

【案例5-7】 for语句和continue语句配合使用(代码5.7.py)。

        bb = 0
        while bb <10:
          bb=bb+1
          if bb==6:    #变量为6时跳过输出
            continue
          print (bb, " 小于或等于10")

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.7.py
        1  小于或等于 10
        2  小于或等于 10
        3  小于或等于 10
        4  小于或等于 10
        5  小于或等于 10
        7  小于或等于 10
        8  小于或等于 10
        9  小于或等于 10
        10  小于或等于 10

在本案例中,将for语句和continue语句配合使用,可以实现输出1~10的数字,并判断每个输出的数字和10的关系。从结果可以看出,当变量为6时,将跳出当前循环,进入下一个循环中。

2.break语句

当for循环被执行完毕或者while循环条件为false时,else子句才会被执行。需要特别注意的是,如果循环被break语句终止,则else子句不会被执行。

【案例5-8】 for语句、break语句和else语句配合使用(代码5.8.py)。

        for aa in 'abcdefg':    #包含break语句
          if aa== 'd':       # 字母为d时跳过输出
              print (’当前字母:', aa)
              break
          else:
              print (’没有发现对应的字母’)

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.8.py
        没有发现对应的字母
        没有发现对应的字母
        没有发现对应的字母
        当前字母:d

5.4.4 pass语句

pass是空语句,主要为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句。

【案例5-9】 for语句和pass语句配合使用(代码5.9.py)。

        for aa in ’霜叶红于二月花’:
          if aa == ’二’:
              pass
              print (’执行pass语句’)
          print (’当前文字:', aa)
        print ("搜索完毕!")

保存并运行程序,结果如下:

        C:\Users\Administrator>python d:\python\ch05\5.9.py
        当前文字:霜
        当前文字:叶
        当前文字:红
        当前文字:于
        执行pass语句
        当前文字:二
        当前文字:月
        当前文字:花
        搜索完毕!

在本案例中,通过for语句和pass语句的配合使用,将字符串中的文字一个个输出,中间执行了一次pass语句。

5.4.5 妙用range()函数和len()函数

如果需要遍历数字序列,通常会用到range()函数和len()函数,如果结合循环控制语句,将起到事半功倍的效果。

使用range()函数会生成数列。例如:

        >>> for n in range(10):
            print (n)

        0
        1
        2
        3
        4
        5
        6
        7
        8
        9

用户也可以使用range()函数指定区间的值。例如:

        >>> for n in range(1,6):
            print (n)

        1
        2
        3
        4
        5

使用range()函数还可以指定数字开始并指定不同的增量。例如

        >>> for n in range(1,10,2):
            print (n)

        1
        3
        5
        7
        9

从结果可以看出,增量为2。增量也可以使用负值。例如:

        >>> for n in range(-1, -10, -2):
            print (n)

        -1
        -3
        -5
        -7
        -9

通过range()函数和len()函数的配合,可以遍历一个序列的索引。举例如下:

        >>> aa= [’空调’, ’冰箱’, ’洗衣机’, ’电视’, ’电风扇’]
        >>> for x in range(len(aa)):
            print(x, aa[x])

        0 空调
        1 冰箱
        2 洗衣机
        3 电视
        4 电风扇