程序的基本结构
一、程序的流程图
程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。
流程图的基本原始包括7种:
二、程序的基本结构
顺序结构是程序的基础,但单一的顺序性结构不可能解决所有问题。程序由三种基本结构组成:顺序结构、分支结构、循环结构。这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成。
顺序结构是程序按照线性顺序依次执行的一种运行方式,其中语句块S1和语句块S2表示一个或一组顺序执行的语句。
分支结构是程序根据条件判断结构而选择不同向前执行路径的一种运行方式,包括单分支和二分支结构。由二分支结构会组合形成多分支结构。
循环结构是程序根据条件判断结构向后反复执行的一种运行方式,根据循环体触发条件不同,包括条件循环和遍历循环结构。
三、程序的基本结构实例
对于一个计算问题,可以用IPO描述、流程图或者直接以Python代码方式描述。
四、程序的基本结构实例
IPO描述主要用于区分程序的输入输出关系,重点在于结构划分,算法主要采用自然语言描述。
流程图描述侧重于描述算法的具体流程关系,流程图的结构化关系相比自然语言描述更进一步,有助于阐释算法的具体操作过程。
Python代码描述的是最终的程序产出,最为仔细。
五、单分支结构:if语句
Python中if语句的语法格式如下:
if<条件>: 语句块
语句块是if条件满足后执行的一个或多个语句序列。语句块中语句通过与if所在行形成缩进表达包含关系。If语句首先评估<条件>的结果值;如果结果为True,则执行语句块里的语句序列,然后控制转向程序的下一条语句。如果结果为False,语句块里的语句会被跳过。
if语句中语句块执行与否依赖于条件判断。但无论什么情况,控制都会转到if语句后与该语句同级别的下一条语句。
if中<条件>部分可以使用任何能够产生True或False的语句。形成判断条件最常见的方式是采用关系操作符。Python语言共有6个关系操作符。
六、二分支结构:if-else语句
Python中的if-else1语句用来形成二分支结构,语句格式如下:
if<条件>: <语句块> else: <语句块>
<语句块1>是在if条件满足后执行的一个或多个语句序列。<语句块2>是if条件不满足后执行的语句序列。二分支语句用于区分<条件>的两种可能True或者False,分别形成执行路径。
二分支结构还有一种更简洁的表达方式,适合通过判断返回特定值,语法格式如下:
<表达式1> if <表达式2>
If…else的紧凑结构非常适合对特殊值处理的情况。
七、多分支结构:if-elif-else语句
Python的if-elif-else描述多分支结构,语句格式如下:
if<条件1>: <语句块> elif<条件2>: <语句块2> … else: <语句块2>
多分支结构是二分支结构的拓展,这种形式通常用于设置同一个判断条件的多条执行路径。
Python依次评估寻找第一个结果为True的条件,执行该条件下的语句块,同时结束后跳过整个if-elif-else结构,执行后面的语句。如果没有任何条件成立,else下面的语句块被执行。else子句是可选的。
八、遍历循环:for循环
遍历循环:根据循环执行次数的确定性,循环可以分为确定次数循环和非确定次数循环。确定次数循环指循环体对循环次数有明确的定义循环次数采用遍历结构中元素个数来体现。Python通过保留字for实现“遍历循环”:
for<循环变量> in <遍历结构>: <语句块>
循环结构可以是字符串、文件、组合数据类型或range()函数:
遍历循环还有一种扩展模式,使用方法如下:
for <循环变量> in <遍历结构>: <语句块1> else: <语句块2>
当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束。因此,可以在<语句块2>中放置判断循环执行情况的语句。
九、无限循环:while语句
无限循环一直保持循环操作直到特定的循环条件不被满足才结束,不需要提前知道确定循环次数。Python通过保留字while实现无限循环,使用方法如下:
while <条件>: <语句块>语句块
无限循环也有一种使用保留字else的拓展模式:
while<条件>: <语句块1> else: <语句块2>
十、循环保留字:break和continue
循环结构有两个辅助保留字:break和continue,它们用于辅助控制循环执行。
break用来跳出最内层for或while循环,脱离该循环后程序从循环后代码继续执行。其中,break语句跳出了最内层for循环,但仍然继续执行外层循环。每个break语句只有能力跳出当前层次循环。
continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。对于while循环,继续求解循环条件。而对于for循环,程序流程接着遍历循环列表。
continue语句和break语句的区别是:
continue语句只结束本次循环,而不终止整个循环的执行。break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
for循环和while循环中都存在一个else扩展用法。
else中的语句块只在一种条件下执行,即for循环正常遍历了所有内容没有因为break或return而退出。continue保留字对else没有影响。
十一、random库的使用
对random库的引用方法与math库一样,采用下面两种方式实现:
import random 或 from random import *
生成随机数之前可以通过seed()函数指定随机种子,随机种子一般是一个整数。只要种子相同,每次生成的随机数序列也相同。这种情况便于测试和同步数据。
十二、π的计算
十三、异常处理机制
异常处理:try-except语句
Python解释器返回了异常信息,同时程序退出
Python异常信息中最重要的部分是异常类型,它表明了发生异常的原因,也是程序处理异常的依据。Python使用try-except语句实现异常处理,基本的语法格式如下:
try: <语句块1> except<异常类型>: <语句块2>
十四、异常的高级用法
最后一个except语句没有指定任何类型,表示它对应的语句块可以处理所有其他异常。这个过程与if-elif-else语句类似,是分支结构的一种表达方式。
该程序将用户输入的数字作为索引从字符串alp中返回一个字符,当用户输入非整数字符时,except NameError异常被捕获到,提示用户输入类型错误。当用户输入数字不再01到256之间时,异常被except捕获,程序打印其他错误信息,执行过程和结果如下:
除了try和except保留字外,异常语句还可以与else和finally保留字配合使用,语法格式如下:
try: <语句块1> except<异常类型1>: <语句块2> else: <语句块3> finally: 语句块4>