今天要学习的是控制流,简单来说就是控制代码执行的流程;
1.顺序控制流
基本语法:
if 条件:
代码块1
else:
代码块2
- 使用顺序控制流的时候,首先我们需要判断
if
条件的真假,真则输出代码块1,否则输出代码块2; - 而这时需要用到真值表; 一般来说,
0
、""
空字符串、()
空元组、[]
空列表、{}
空字典、None
等空值的都为False
;而像1
、"Str"
字符串等有值的都为 True;
2.分支控制流
基本语法:
if 条件1:
代码块1
elif 条件2:
代码块2
else:
代码块3
- 分支控制流,就是除了
if
和else
以外,再加上不定量的elif
,执行顺序是自上而下,满足条件则执行 - 如上例子中,就是满足哪个条件语句,输出哪个条件下面的代码块;
3.嵌套控制流
基本语法:
if 条件1:
代码块1
elif 条件2:
if 条件2.1:
代码块2.1
else:
代码块2.2
else:
代码块3
- 嵌套控制流是在分支控制流基础上,再嵌套新的控制流,如上述例子所示,在
elif
条件2下面在嵌套一个新的if
控制流; - 且嵌套控制流的执行顺序同分支控制流相同,自上而下满足条件则执行相应代码块;
4.循环控制流
(1)while
循环
例:
a = 5
while a > 1:
print('yes')
a -= 1
- 第一次循环满足
while
循环a > 1
的条件时,则开始循环,执行print语句输出yes; - 第二次循环如果还满足循环条件,则继续print执行语句输出yes;
- 一直到循环不满足条件时(即 a 不再大于 1),循环终止,不再执行;
- 所以最终结果是输出四个yes;
(2)while else
循环
例1:
a = 5
while a > 1:
print('yes')
a -= 1
else:
print('循环结束')
例2:
a = 5
while a > 1:
print('yes')
a -= 1
if a == 2:
break
else:
print('循环结束!')
while else
循环和while
循环不同的地方在于,如果是正常终止的循环,也就是像例1一样的没有 break的循环,最后一次循环完毕后,不仅会输出4个yes,还会接着执行else
中的语句,输出“循环结束”;- 如果是像例2一样在循环里面加上了一个新的
if
条件 和break
语句时,则只要满足了if
条件循环就会直接终止,不再执行任何语句,也就是跳出循环;
(3)for循环
例:
for i in range(5):
print(i)
- for循环里面当满足
if
循环条件时,则循环一直执行,不满足则退出; - 上述循环输出答案为
0,1,2,3,4
; - 注:
range
函数是一个可迭代对象,比如上述range
(5)会生成从0到5区间( 即[0,9]或[0,10) )的所有整数,range就像数学中的区间 一样,左边是闭区间,右边是开区间;
(4)for else循环
例:
i = None
for i in range(5):
print(i)
else:
print(i)
for else
循环和while else
循环有点类似,如果是正常退出的,当执行完for
循环的最后一次循环时,会接着循环else
里面的语句,如上述例子中,在输出了1,2,3,4
之后会继续执行else中的语句,此时i = 4 ,所以会继续输出一个4;- 而如果在for循环里面加了break,那么只要满足break的条件,循环就会终止;
(5)continue 语句
例:
#方法一
for i in range(1,11):
if i % 2:
print(i)
#方法二
for i in range(1,11):
if i % 2:
continue
print(i)
- 循环中如果使用了
continue
关键字,当条件为真的时候,会执行continue
,直接进行下一次新的循环,不会再继续执行continue
后面的语句; - 条件为假的时候情况正好相反,
continue
不会执行,而是会执行continue
后面的语句; - 所以上述例1输出:
1,3,5,7,9
,例2正好相反,输出:2,4,6,8,10
; - 注:
range
类的使用,range
(start,stop[,step]) -> range object。如果直接输出range
,会实现一个魔术方法,str()
或者repr()
方法,返回自己本身。如果想打印range
里面的内容,可以把range
包装成列表list
的形式;
(6)break 语句
例:
flag = 0
for i in range(1,100):
if i % 3:
print(i)
flag += 1
if flag >= 5:
break
break
关键字和continue
有点不同,如果条件为真的时候,会执行break
,直接跳出循环;- 条件为假时,不会执行
break
,而是执行break
后面的语句; - 所以上述例子中会输出:
1,2,4,5,7
- 注意:在 Python 中,
continue
和break
只能影响当前所在的这一层循环,如果是在内部循环中进行continue
和break
,那么外层循环不会受到影响;
本文参考自侠课岛(9xkd.com)Python同学计划