程序的循环结构
一、概述
- 遍历循环
- 无限循环
- 循环控制保留字
- 循环的高级用法
二、遍历循环
遍历某个结构形成的循环运行方式
for <循环变量> in <遍历结构>:
<语句块>
- 从遍历结构中逐一提取元素,放在循环变量中
- 由保留字
for
和in
组成,完整遍历所有元素后结束 - 每次循环,所获得元素放入循环变量,并执行
三、遍历循环的使用
3.1 计数循环(N次)
格式:
for i in range(N):
<语句块>
- 遍历由
range()
函数产生的数字序列,产生循环
eg:
for i in range(5):
print(i)
结果:
0
1
2
3
4
3.2计数循环(待定次)
格式:
fro i in range(M,N,K):
<语句块>
- 遍历由
range()
函数产生的数字序列,产生循环
eg
for i in range(1, 6):
print(i)
结果:
1
2
3
4
5
eg
for i in range(1, 6, 2):
print('hello:', i)
结果:
hello: 1
hello: 3
hello: 5
3.3 字符串遍历循环
格式:
for c in s:
<语句块>
- s是字符串,遍历字符串每个字符,产生循环
eg:
for c in 'python':
print(c, end=',')
结果:p,y,t,h,o,n,
3.4 列表遍历循环:
格式:
for item in ls:
<语句块>
- ls是一个列表,遍历其每个元素,产生循环
for item in [123, "PY", 456]:
print(item, end=",")
结果:123,PY,456,
3.5 文件遍历循环
格式:
for line in fi:
<语句块>
- fi是一个文件标识符,遍历其每行,产生循环
'# fi.txt'
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂
eg:
for line in fi:
print(line)
结果:
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂
四、无限循环
由条件控制的循环运行方式
- 反复执行语句块,直到条件不满足时结束
eg:
a = 3
while a > 0:
a = a - 1
print(a)
结果:
2
1
0
# 死循环, (CTRL + C 退出执行)
a = 3
while a > 0:
a = a + 1
print(a)
五、循环控制保留字
5.1 break和continue
- break跳出并结束当前整个循环,执行循环后的语句
- continue结束当次循环,继续执行后续次数循环
- break和continue可以与for和while循环搭配使用
eg: for
for c in "PYTHON":
if c == 'T':
continue
print(c, end=',')
结果:P,Y,H,O,N,
for c in "PYTHON":
if c == 'T':
break
print(c, end=',')
结果:P,Y,
eg:while
- break仅跳出当前最内层循环
s = "PYTHON"
while s != "":
for c in s:
print(c, end=',')
s = s[:-1]
结果:P,Y,T,H,O,N,P,Y,T,H,O,P,Y,T,H,P,Y,T,P,Y,P,
s = "PYTHON"
while s != "":
for c in s:
if c == 'T':
break
print(c, end=',')
s = s[:-1]
结果:P,Y,P,Y,P,Y,P,Y,P,Y,P,
六、循环的高级用法
6.1循环的扩展
循环与else
格式: for....else
for <变量> in <遍历结构>:
<语句块1>
else:
<语句块2>
格式:while....else
while <条件>:
<语句块1>
else:
<语句块2>
- 当循环没有被break语句退出时,执行else语句块
- else语句块作为"正常"完成循环的奖励
- 这里else的用法与异常处理中else用法相似
eg:
for c in "PYTHON":
if c == "T":
continue
print(c, end="")
else:
print("正常退出")
结果:PYHON正常退出
eg:
for c in "PYTHON":
if c == "T":
break
print(c, end="")
else:
print("正常退出")
结果:PY
七、单元小结
for…in
遍历循环:计数、字符串、列表、文件…while
无限循环continue
和break
保留字:退出当前循环层次- 循环else的高级用法:与
break
有关
在当下的阶段,必将由程序员来主导,甚至比以往更甚。