Python程序设计基础(四)
程序的控制结构
程序流程图
程序流程图是一种表达程序控制结构的方式,主要用于关键部分的程序分析和过程描述,由系列图形、流程线和文字说明等组成。
流程图包括7种基本元素

起止框:表示程序逻辑的开始或结束
判断框:表示一个判断条件,并根据判断结果选择不同的执行路径
处理框:表示一组处理过程,对应于顺序执行的程序逻辑
输入/输出框:表示程序中的数据输入或结果输出
注释框:表示程序的注释
流向线:表示程序的控制流,以带箭头直线或曲线表达程序的执行路径
连接点:表示多个流程图的连接方式,常用于将多个较小流程图组织成较大流程图
程序的控制结构基础
程序由3种基本结构组成:顺序结构、分支结构和循环结构。任何程序都由这3种基本结构组合而成。
顺序结构是程序按照线性顺序依次执行的一种运行方式

分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式。
最基础的分支结构是二分支结构,即判断条件产生“是”或“否”的结果,并根据这个结构选择不同路径。二分支结构会组合形成多分支结构。

循环结构是程序根据条件判断结果向后执行的一种运行方式。
由于向后执行形成了对已执行代码的反复执行效果,因此,这种逻辑被称为循环。

程序的控制结构扩展
在3种基本控制逻辑基础上, Python语言进行了必要且适当的扩展。
在分支结构原理的基础上, Python增加了异常处理,使用try-except
保留字
异常处理以程序是否异常为判断条件,根据一段代码执行的正确性进行程序逻辑选择。
异常处理是分支结构的一种扩展。
在循环结构原理的基础上, Python提供两个循环控制符 break
和 continue
, 对循环的执行过程进行控制。break
控制符用来结束当前循环, continue
控制符用来结束当前循环的当次循环过程

程序的分支结构
单分支结构
Python的单分支结构使用if
保留字对条件进行判断
1 | if<条件>: |
<语句块>是if条件满足后执行的一个或多个语句序列, 缩进表达<语句块>与if
的包含关系。
<条件>是一个产生True
或 False
结果的语句, 当结果为True时, 执行<语句块>, 否则跳过<语句块>。
1 | # ~ 判断奇偶性 |
二分支结构
Python的二分支结构使用if-else保留字对条件进行判断
1 | if<条件>: |
<语句块1>在证中<条件>满足即为True
时执行, <语句块2>在if
中<条件>不满足即为False
时执行。
简单说,二分支结构根据条件的True
或 False
结果产生两条路径。
1 | # ~ 判断数是否同时能被3和5整除 |
二分支结构还有一种更紧凑的表达方式, 适合<语句块1>和<语句块2>都只包含简单表达式的情况
1 | <表达式1> if <条件> else <表达式2> |
1 | # ~ 判断数是否同时能被3和5整除 |
多分支结构
Python的多分支结构使用if-elif-else
保留字对多个相关条件进行判断, 并根据不同条件的果按照顺序选择执行路径
1 | if<条件1>: |
多分支结构通常用于判断同一个条件或一类条件的多个执行路径。
要注意, Python会按照多分支结构的代码顺序依次评估判断条件, 寻找并执行第一个结果为True条件对应的语句块, 当前语句块执行后跳过整个if-elif-else
结构。
如果没有任何条件成立, else
下面的语句块被执行。else
子句是可选的。利用多分支结构编写代码时要注意多个逻辑条件的先后关系。
1 | #输入百分制成绩进行评分 |
程序的循环结构
Python语言的循环结构包括两种:遍历循环和无限循环。
遍历循环
Python通过保留字for
实现遍历循环
1 | for <循环变量> in <遍历结构>: |
遍历循环可以理解为从遍历结构中逐一提取元素, 放在循环变量中, 对于每个所提取的元素执行一次语句块。
for
语句的循环执行次数是根据遍历结构中元素个数确定的。
遍历结构可以是字符串、文件、 range()函数或组合数据类型等。
1 | for s in "Hello": |
遍历循环还有一种扩展模式
1 | for <循环变量> in <遍历结构>: |
当fo
r循环正常执行之后,程序会继续执行else
语句中内容。
else
语句只在循环正常执行没有被 break
打断才执行, 因此, 可以在<语句块2>中放置判断循环执行情况的语句。
1 | for s in "Hello": |
无限循环
Python通过保留字 while
实现无限循环
1 | while <条件>: |
当程序执行到 while
语句时, 判断条件如果为True, 执行循环体语句, 循环体语句结束后返回再次判断 while语句的条件;
当条件为 False时, 循环终止, 执行与 while同级别缩进的后续语句。
1 | n = 0 |
无限循环也有一种使用保留字else
的扩展模式
1 | while <条件>: |
在这种扩展模式中, 当 while
循环正常执行之后, 程序会继续执行else
语句中内容。
else
语句只在循环正常执行后才执行, 因此, 可以在语句块2中放置判断循环执行情况的语句。
while
循环的else
语句与for
循环的else
语句一样, 都是循环正常执行结束的“奖励”部分。
1 | s,index = "Hello",0 |
循环控制
循环结构有两个辅助循环控制的保留字: break
和 continue
break
用来跳出最内层for
或 while
循环 , 脱离该循环后程序继续执行循环后续代码。
如果有2层或多层循环, break
退出最内层循环。
1 | while True: |
continue
用来结束当前当次循环, 即跳出循环体中下面尚未执行的语句, 但不跳出当前循环。
1 | for s in "hello": |
程序的异常处理
基本异常处理
Python程序一般对输入有一定要求, 但当实际输入不满足程序要求时, 可能会产生程序的运行错误。
Python语言使用保留字try
和 except
进行异常处理
1 | try: |
语句块1是正常执行的程序内容, 当执行这个语句块发生异常时, 则执行 except
保留字后面的语句块2。
1 | try: |
特殊异常处理
仔细观察 Python程序的异常错误信息, 最后一行给出了异常提示,其中包含了对异常处理类型的描述,比如 NameError
、 ZeroDivisionError
。这些异常处理类型由 Python语言定义。
1 | try: |
1 | try: |
Python实例
猜数字游戏
编写一个“猜数字游戏”的程序, 在1-1000之间随机产生一个数, 然后请用户循环猜这个数字, 对于每个答案只回答“猜大了”或“猜小了”,直到猜对为止, 输出用户的猜测次数。
1 | # ~ 猜数字游戏 |