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 电风扇