二:程序的控制结构
1.程序流程图
- 程序流程图是用一类列图形,流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。 流程图的基本元素包括7种:
其中,起止框表示一个程序的开始和结束;判断框判断一个条件是否成立,并根据判断结果选择不同的执行路径;处理框表示一组处理过程; 输入/输出框表示数据输入或结果输出;注释框增加程序的解释;流向线以带箭头直线或曲线形式指示程序的执行路径;连接点将多个流程图连接到一起,常用于将一个较大流程图分隔为若干部分。下图所示为一个流程图示例,为了便于描述,采用连接点A将流程图分成两个部分。
2.程序基本结构
程序三种基本结构:顺序结构,分支结构和循环结构。
-
顺序结构:是程序按照线性顺序依次执行的一种运行方式;-分 支结构
-
分支结构:是程序根据条件判断结果而选择不同向前执行路径的一种运行方式;
分支结构又分为单分支结构;二分支结构;多分支结构。- 单分支结构:if 语句
语法格式如下:
if <条件>:
<语句>
语句块是if条件满足后执行的一个或多个语句序列,语句块中语句通过与if所在行形成缩进表达包含关系。if 语句首先评估条件的结果值,如果结果为True,则执行语句块中的语句序列,然后控制转向程序的下一条语句。如果结果为False,语句块中的语句会被跳过。- 二分支结构:if—else
if <条件>:
<语句块1>
else:
<语句块2>
语句块1是在if条件满足后执行的一个或多个语句序列,语句块2是if条件不满足后执行的语句序列。二分支语句用于区分条件的两种可能,即True或者False,分别形成执行路径;
二分支结构还有一种更简洁的表达方式,适合通过判断返回特定值,语法格式如下:
<表达式1> if <条件> else <表达式2>- 多分支结构:if—elif—else
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
···
else:
<语句块N>
多分支结构是二分支结构的扩展,这种形式通常用于设置同一个判断条件的多条执行路径。Python依次评估寻找第一个结果为 True的条件,执行该条件下的语句块,结束后跳过整个if-elif-else 结构,执行后面的语句。如果没有任何条件成立,else’下面的语句块将被执行。else 子句是可选的。 - 单分支结构:if 语句
-
循环结构:是根据条件判断结果向后反复执行的一种运行方式。
- 遍历循环(即有限循环):for语句
之所以称为“遍历循环”,是因为for语句的循环执行次数是根据遍历结构中元素个数确定的。遍历循环可以理解为从遍历结构中逐一提取元素, 放在循环变量中,对于所提取的每个元素执行一次语句块。
for <循环变量> in <遍历结构>:
<语句块2>
遍历结构可以是字符串、文件、组合数据类型或range( )函数等,例如
循环N次
for i in range(N):
<语句块>
遍历文件 fi 的每一行
for line in fi:
<语句块>
遍历字符s
for c in s:
<语句块>
遍历列表ls
for item in ls:
<语句块>- 无限循环(即条件循环):while语句
无限循环一直保持循环操作直到循环条件不满足才结束,不需要提前确定循环次数
while <条件>:
<语句块>- 循环保留字:break和continue
break用来跳出最内层for或while循环,脱离该循环后程序从循环代码后继续执行;
continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。
- 遍历循环(即有限循环):for语句
3.程序的异常处理
-
异常处理:try—except
举例
当输入数字时,程序正常执行,如果输入的不是数字呢?
Python异常信息中中最重要的部分是异常类型,它表明了异常的原因,也是程序处理异常的依据。Python使用try—except语句实现异常处理,其基本语法格式如下:
try:
<语句块1>
except <异常类型>:
<语句块2>为上述实例程序增加异常处理
-
异常的高级用法
try—except语句可以支持多个except语句,语法格式如下:try:
<语句块1>
except <异常类型1>:
<语句块2>
···
except <异常类型N>:
<语句块N+1>
except:
<语句块N+2>举例
-
Python能识别多种异常类型,但不能编写程序时过度依赖try-except这种异常处理机制。try-except 异常一般只用来检测极少发生的情况,例如,用户输入的合规性或文件打开是否成功等。对于上面实例中索引字符串超过范围的情况应该尽量在程序中采用if语句直接判断,而避免通过异常处理来应对这种可能发生的错误”。
对于面向商业应用的软件产品,稳定性和可靠性是最重要的衡量指标之–。即使这类软件产品也不会滥用try-except类型语句。因为采用try-except语句会影响代码的可读性,增加代码维护难度,因此,- 般只在关键地方采用try- except类型语句处理可能发生的异常。建议读者结合函数设计统筹应用异常处理。更多经验还需要实践来积累。