无论多复杂的流程控制用分支与循环这两种语句就够了,如同无论多复杂的电路最终都是由通路和开路仅仅两个状态构成的一样。
if 语句
if 语句的最简单构成是这样 —— 注意第 1 行末尾的冒号 : 和第 2 行的缩进:
if expression:
statements
如果表达式 expression 返回值为真,执行 if 语句块内部的 statements,否则,什么都不做,执行 if 之后的下一个语句。
如果,表达式 expression 返回值无论真假,我们都需要做一点相应的事情,那么我们这么写:
if expression:
statements_for_True
else:
statements_for_False
如果表达式 expression 返回值为真,执行 if 语句块内部的 statements_for_True,否则,就执行 else 语句块内部的statements_for_False
有时,表达式 <expression> 返回的值有多种情况,并且针对不同的情况我们都要做相应的事情,那么可以这么写:
if expression_1:
statements_for_expression_1_True
elif expression_2:
statements_for_expression_2_True
elif expression_3:
statements_for_expression_3_True
elif expression_...:
statements_for_expression_..._
for 循环
Python 语言中,for 循环使用range() 这个“整数等差数列生成器” 的函数。
range() 是个内建函数,它的文档如下:
range(stop)
range(start, stop[, step])
只有一个参数的时候,这个参数被理解为 stop,生成一个从 0 开始,到 stop - 1 的整数数列。
这就解释了为什么有的时候我们会在 for ... in range(...): 这种循环内的语句块里进行计算的时候,经常会在变量之后写上 + 1,因为我们 range(n) 的返回数列中不包含 n,但我们有时候却需要 n。
start 参数的默认值是 0。如需指定起点,那么得给 range() 传递两个参数,比如,range(2, 13)……
第三个参数可选;step,步长,就相当于是 “等差数列” 当中的 “差”,默认值是 1。例如,range(1, 10, 2) 生成的是这样一个数列 [1, 3, 5, 7, 9]。
Continue、Break 和 Pass
在循环的过程中,可以用 continue 和 break 控制流程走向,
continue 语句将忽略其后的语句开始下次循环,而 break 语句将从此结束当前循环,开始执行循环之后的语句:
for 语句块还可以附加一个 else —— 这是 Python 的一个比较有个性的地方。附加在 for 结尾的 else 语句块,在没有 break 发生的情况下会运行。
pass 这个语句主要用来占位占位。
while 循环
在当前绝大多数编程语言中,一般都提供两种循环结构:
Collection-controlled loops(以集合为基础的循环)
Condition-controlled loops(以条件为基础的循环)
for ... in ... 是 Collection-controlled loops;while是Condition-controlled loops
while 循环的格式如下:
while expression:
statements
for 和 while 的区别
for 更适合处理序列类型的数据(Sequence Type)的迭代,比如处理字符串中的每一个字符,比如把 range() 返回的数列当作某种序列类型的索引。
while 更为灵活,因为它后面只需要接上一个逻辑表达式即可。
控制流程总结
只处理一种情况,用 if ...
处理 True/False 两种情况,用 if ... else ...
处理多种情况,用 if ... elif ... elif ... else ...
迭代有序数据类型,用 for ... in ...,如果需要处理没有 break 发生的情况,用 for ... else ...
其它循环,用 while ...
与循环相关的语句还有 continue、break、pass
函数从控制流角度去看其实就是子程序
网友评论