流程控制语句
# 流程控制
# 介绍
流程控制是用来控制程序中各语句的执行顺序,在Python中可以使用if、while、for、break、continue、pass做流程控制。
# 流程控制语句
**if:**条件语句。
根据给定的条件的判断结果,决定是否执行,或者应该执行哪个分支。
**while:**循环语句。
如果给定的条件成立,则会循环代码块中的代码。
**for:**循环语句。
for循环会将可迭代对象中的值,一个一个取出,然后赋值给变量,每循环一次就迭代一次,变量也就变一次,知道迭代对象的值被迭代完。
注意迭代对象只能是有序类型:列表、字典、元组、字符串等。
**break:**结束语句所在处的循环。
**continue:**跳过当前循环,直接进行下一次循环。
**pass和...:**空语句,用于占位。
# if语句定义
# 单分支
if ...
如果条件成立则执行。
if [条件]:
代码1
代码2
代码3
2
3
4
# 双分支
if ... else ...
如果条件成立则执行代码块1,否则执行else下的代码块2。
一个if判断中else最多只有一个。
if [条件]:
代码1
代码2
代码3
else:
代码1
代码2
2
3
4
5
6
7
# 多分支
if ... elif ... else ...
如果条件1成立则执行代码块1,否则判断条件2,如果条件2成立则执行代码块2,否则执行else下的代码块3。
一个if判断中elif可有多个。
if [条件1]:
代码1
代码2
代码3
elif [条件2]:
代码1
代码2
elif [条件3]:
代码1
代码2
else:
代码1
代码2
2
3
4
5
6
7
8
9
10
11
12
13
# while语句定义
写程序时要避免重复代码,也就是代码冗余,能用循环就用循环。
# 普通循环
如果条件成立则会循环,代码块执行完后,会再次判断,如果仍然成立,则会继续循环,直到条件判断为假。
while [条件]:
代码1
代码2
... ...
2
3
4
# 嵌套循环
循环可以嵌套多层,如果需要一个循环结束,另一个也结束,可以使它们都用一个循环控制变量,一个循环使条件满足,所以循环都结束。
tag=True
while tag:
while tag:
代码1
代码2
... ...
2
3
4
5
6
# while-else语法
else中的代码,会在while循环正常结束后运行。
如果是由break打断的循环,则不会运行else中的代码,也就是可以针对没有break退出的,执行某些代码。
while [条件]:
代码1
代码2
... ...
else:
代码1
代码2
... ...
2
3
4
5
6
7
8
# while对象迭代
while也可用于迭代可迭代对象,但一般是使用for循环迭代对象,while方式了解即可。
list = ["我是","一头","猪"]
a = iter(list) # 转换成迭代对象
while True:
try:
print(next(a))
except StopIteration:
break
2
3
4
5
6
7
# 循环的控制
方式一:使循环条件为假。
# tag之后的代码仍然会执行,直到下次循环判断为不成立后,才会结束循环。
tag=True
while tag:
tag=False
print("test")
2
3
4
5
方式二:使用break语句跳出循环。
# break语句执行后,会立刻跳出循环,之后的代码都不会再执行。
while True:
break
print("test")
2
3
4
方式三:使用continue语句跳过本次循环。
# continue语句执行后,会立刻跳过本次循环,直接进入下次循环,continue后面的代码不会执行。
while True:
print("123")
continue
print("test")
2
3
4
5
# 循环注意事项
死循环问题,死循环即一直循环,并且无法跳出循环。死循环会不停运行导致大量调用CPU资源,如数学运算,会带来致命的效率问题。但是对于有等待的死循环,则不会带来这种问题,比如Input需要用户输入才会继续执行。
修改迭代对象问题,对于循环时使用的迭代对象,在循环中一定不能修改迭代对象的值,可能会导致代码逻辑混乱。
# for语句定义
# 普通循环
for [变量名] in [可迭代对象]:
代码1
代码2
代码3
... ...
2
3
4
5
嵌套循环等,也是和while一样的。
# for-else语法
同while一样,针对非break退出的正常结束循环,会执行else下的代码。
for [变量] in [可迭代对象]:
代码1
代码2
... ...
else:
代码1
代码2
... ...
2
3
4
5
6
7
8
# 解压赋值迭代
for k,v in ...
可以k,v...解压赋值的形式循环。
a = [[1,2],[3,4]]
for k,v in a:
print(k,v)
2
3
# 可迭代对象
可迭代对象可以是:列表、字典、字符串、元组、集合。
# "pass"和"..."语法
pass和...代表什么都不做,只是一个占位符。一般用于事先定义函数,使用占位符留空等后续再写。