《Python程序设计案例教程第3章 程序结构教学课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计案例教程第3章 程序结构教学课件.pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Python程序设计案例教程第3章 程序结构l了解算法和流程图的概念。l理解程序的三种基本结构。l能熟练利用流程图的方式描述算法。l能利用结构化思想解答实际问题。l能灵活选用结构语句进行编码解决实际问题。01算 法 和 流 程 图算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法应该具有如下特点。(1)输入(input)。输入是指从外部获取的信息,一个程序可以有零个或多个输入。(2)输出。问题求解的目的是为了得到“解”,故应该把得到的结果输出,一个程序应该有一个或多个输出。没有输出的算法是没有意义的。(3)有穷性。一个算法应在有限
2、的操作步骤后得到结果。(4)确定性。算法中的每个步骤都应当是确定的,而不应当是含糊的、模棱两可的。(5)有效性。算法中的每个步骤都应当能有效地执行,并得到确定的结果。算算法法即即解解决决问问题题的的步步骤骤,算算法法的的描描述述方方式式有有很很多多种种,常常用用的的方方法法有有自自然然语语言言、流流程程图图、伪伪代码等。本节将介绍使用流程图描述算法的方法。代码等。本节将介绍使用流程图描述算法的方法。流流程程图图可可用用Microsoft Office Word、Microsoft Office PowerPoint、Microsoft Office Visio等等工具来绘制,绘制的流程图如工具
3、来绘制,绘制的流程图如下下图所示图所示:程序结构程序结构一一个个程程序序除除了了算算法法这这个个主主要要要要素素,还还应应当当采采用用结结构构化化程程序序设设计计方方法法进进行行程程序序设设计计。结结构构化化程程序序设设计计由由迪迪克克斯斯特特拉拉(E.W.Dijkstra)在在1965年年提提出出,曾曾被被称称为为软软件件发发展展中中的的第第三三个个里里程程碑碑,它它的的主主要要观观点点是是采采用用自自顶顶向向下下、逐逐步步求求精精及及模模块块化化的的程程序序设设计计方方法法。结结构构化化程程序序设设计计使使用用顺顺序、选择、循环三种基本控制结构构造程序,任何程序都可由这三种基本控制结构构序
4、、选择、循环三种基本控制结构构造程序,任何程序都可由这三种基本控制结构构造。造。02顺序结构任何一件事情的处理都是有顺序的,顺序结构程序设计表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如下图所示。事实上,不论程序中包含了什么样的结构,程序的总流程都是顺序结构的。【例3.2】每位同学都有到快递代收点取快递的经历,能否用流程图描述一下取快递的过程?算法设计:当我们去取快递时,是按照出示取件码、领件、查验离开的顺序依次操作的,在结构化程序设计中取快递的流程是属于典型的顺序结构。流程图:如下图所示。【例3.3】任意两个数求和。算法设计:任意两个数求和,首先分别输入两个数,然后求和,最后输出
5、计算结果,整个求解过程属于典型的顺序结构。流程图:如下图所示。【例3.4】计算圆的面积。算法设计:设圆的半径为r,面积为s,根据数学中圆的面积公式可知s=3.1415926*r*r。计算圆的面积。首先输入半径,然后根据求解公式计算,最后输出计算结果,整个求解过程属于顺序结构的范畴。流程图:如下图所示。巩固提高1输入圆柱体的半径和高,计算圆柱体的体积(底面圆面积乘以高)。2已知x=1、y=2,实现x、y值的交换,即交换后x=2、y=1。3给定一个3位整数,输出其十位、百位和个位上的数,如346,其个位为6、十位为4、百位为3。03选择结构选择结构顾名思义要进行选择。当程序在某个处理过程中,遇到了
6、很多分支,无法按直线走下去,这时它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单分支、双分支和多分支三种形式,其流程图如下图所示。在Python程序中,当满足某个特定条件才执行一些操作,可用单分支if语句。单分支if语句的语法结构如下:if条件:程序块if语句执行过程:如果条件为真,则执行冒号后的程序块;如果条件为假,则不执行程序块。其执行流程图如下图所示。【例3.5】某教育机构规定,如果学员成绩达到60分,就为其颁发合格证书。能否编程模拟实现颁发合格证书的流程?算法设计:颁发合格证书的操作是在成绩达到60分这一特定条件下执行的,可用典型的if语句来实现。流程图:如图所示。【例3.
7、6】对年龄进行判断,如果年龄小于18,则输出“这是一位未成年人!”。算法设计:定义年龄为age,输入其值后,对age进行判断,如果年龄小于18则输出“这是一位未成年人!”,因此输出操作是在年龄小于18这一特定条件下执行的,可用典型的if语句来实现。流程图:如图所示。巩固提高1输入年龄age,对其判断,如果年龄为65,则输出“恭喜你,达到法定退休年龄了!”。2从键盘输入6位密码,对密码进行判断,如果密码为“123456”,则分别输出“密码正确!”和“欢迎登录该系统!”。双分支语句双分支语句在Python程序中,当根据条件进行选择,如果条件成立则选择执行某一操作,否则执行另一操作,可用双分支if-
8、else语句,其语法结构如下:if条件:程序块一else:程序块二双分支if-else语句执行过程:如果条件为真,则执行程序块一;如果条件为假,则执行语句块二。其执行流程图如图3-11所示。【例3.7】购物超市出口一般设有未购物通道,按超市规定出超市时,如果顾客没有购物应走未购物通道,否则走收银台结账出来。算法设计:顾客出超市要根据是否购物选择不同的通道,共两种选择,可用双分支结构来描述,判断的条件为是否购物。巩固提高1判断一个数是否为奇数。2某快递公司托运物品规定:重量不超过50公斤的,托运费按每公斤0.15元计费;如超过50公斤,则超过部分每公斤加收0.10元。编一程序完成自动计费工作。3
9、程序员考试分理论知识和案例分析两个科目,在一次程序员考试中,只有两个科目分数均达到45分及以上,才算通过考试。编一程序对考生是否通过程序员考试进行自动计算。多分支语句多分支语句在Python程序中,当根据某特定条件在多个选择中择其一执行可用ifelifelse语句。其语法结构如下:if条件一:程序块一elif条件二:程序块二elif条件三:else:程序块else多分支if-elif-else语句执行过程:如果条件一为真,则执行程序块一;否则(即条件一为假),如果条件二为真,则执行程序块二;否则(即条件一、二均为假),如果条件三为真,执行程序块三,以此类推;如果以上条件均不成立,执行程序块el
10、se。【例3.9】某会所会员卡充值推出如下优惠:充值10000元及以上的打7折,充值5000元以上但不足10000元的打8折,充值1000元以上但不足5000元的打9折。算法设计:充值要根据充值的金额大小选择不同的优惠方案,共三种充值折扣优惠选择,可用多分支结构来描述。巩固提高1在显示器上显示一个菜单模型,当输入数字时输出其对应的文字,如输入4则输出查询。菜单程序的模型如下:1存款2取款3转账4查询5退出请输入你需要的操作编号:2根据某人的BMI值,判定其身高体重指标的等级(小于18.5为“偏瘦”,大于等于18.5且小于24为“正常”,大于等于24且小于27为“偏胖”,大于等于27且小于30为
11、“肥胖”,大于等于30为“重度肥胖”)。3输入一个不多于5位的正整数,求出它是几位数,如输入3457则输出其为4位数。改为:数04循环结构循环结构用来表示反复执行某些操作的过程,直到循环条件为假结束。循环语句允许我们执行一个语句或语句组多次。在Python中,常用的循环语句包括while语句和for语句。在Python程序中,根据某一条件重复执行某些操作,可用while语句来实现,其语法结构如下:while条件:程序块while语句执行过程:如果条件为真,则反复执行程序块;如果条件为假,则结束while循环,继续执行while循环后面的代码。【例3.14】辅导员李老师的班上有50名刚进校的大一
12、新生,在为学生办理学生证时要逐个审查学生证上的基本信息是否有误。请利用循环结构画出审核50个学生的学生证的流程图。算法设计:如果把审核学生证看作单一的一件事的话,李老师要重复做50次审核学生证这一操作。故审核学生证在结构化程序中属于典型的循环结构。在这个循环结构中,循环的条件是审核次数小于等于50次,当次数达到50次审核后循环结束,循环语句为审核学生证。【例3.16】求1到100之间的所有整数的和。算法设计:求1到100的整数的和,设累加和变量sum,初值为0,循环变量i,初值为1,将1到100依次作为变量i的值进行累加,如果i大于100则结束循环。巩固提高1输出50100范围内所有的奇数。2
13、输入若干非负整数,当输入-1时程序终止,计算出输入数据的最大值、最小值和平均值。range()函数格式如下:range(start,end,step)range()函数返回一个从start开始、end结束(不包含end),且间隔为step的整数序列对象。其参数解析为:start表示计数从start开始,默认从0开始。例如,range(5)等价于range(0,5)。end表示计数到end结束,但不包括end。例如,range(0,5)是0,1,2,3,4,没有5。step表示步长,即每次跳跃的间距,默认为1。例如,range(0,5)等价于range(0,5,1)。for语句语句Python中
14、for循环和while循环在本质上是没有区别的,但在实际应用中,其针对性不太一样。for主要应用在序列遍历中。for语句的一般形式为:for变量in序列:程序块for语句执行过程:首先取序列中第一个元素作为变量的值,执行程序块,然后依次取序列中下一个元素作为变量的值,再一次执行程序块,反复下去,直到序列中所有元素全取出为止。执行for循环时,系统自动将序列中的元素依次作为变量的值,反复执行程序块,即序列中有多少个元素,就会执行多少次程序块。如果需要遍历数字序列,则可以使用内置range()函数生成数列。【例3.18】求10的阶乘。算法设计:1到10的整数可以通过range()函数构造数列,将数
15、列中的元素值依次作为变量i的值进行累乘,如果i大于10则跳出循环,设累乘变量p,初值为1。流程图:如图3-25所示。代码实现:p=1foriinrange(1,11):p=p*iprint(p)运行结果:3628800巩固提高1求100以内奇数的累加和。2等额本金为一种常见的银行贷款还款方式。假设贷款20万元,贷款期限为20年(240个月),贷款月利率为0.5%,按照等额本金方式还款的话,每月偿还的贷款本金一样,都是 20万 元/240月=833.33元,贷 款 利 息 首 月 则 是 20万 元*0.5%=1000元,本息合计1833.33元。第二个月,本金依然是833.33元,但 利 息
16、则 变 成(20万 元-833.33元)*0.5%=995.83335元。小王近期在银行贷款80万元,贷款期限为30年,月利率为0.49%,试打印出采用等额本金还款方式的还款清单及还款总额。前面我们介绍的都是按照事先制定的循环条件正常执行和终止的循环,但是有时在循环执行的过程中需要提前终止循环,就要用到break语句;有时并不希望终止整个循环操作,而只希望提前结束本次循环,接着执行下次循环,这时可以用continue语句。知识点提示:(1)break语句用于提前结束正在执行的循环。(2)continue语句用于提前结束本次循环,接着执行下次循环。【例3.20】某校在1000个学生中征集慈善募捐
17、,当总数达到10万元时就结束,统计此时捐款的人数。算法设计:循环次数不确定,但最多循环1000次,在循环体中累计捐款总数,用if语句检查是否达到10万元,如果达到就不再继续执行循环,终止累加。流程图:如图3-27所示。代码实现:total=0foriinrange(1,1001):money=int(input(请输入募捐的金额:)total=total+moneyiftotal=100000:breakprint(捐款人数为:,i)运行结果:请输入募捐的金额:50000请输入募捐的金额:20000请输入募捐的金额:30000捐款人数为:3巩固提高1输出1000以内能被7整除的前10个数,其中
18、第5个数不输出。2某校在全校10000名学生中,征集公益图书捐赠,当图书总数达到5000本时就结束。统计结束时捐赠图书的人数、图书总数及平均每人捐款的图书本数。一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,内嵌的循环中还可以嵌套循环,即多层循环。知识点提示:(1)嵌套的原则:不允许交叉。(2)循环与分支可以相互嵌套但不允许交叉。【例3.22】输出如下图形:*算法设计:分3行输出,即反复执行打印一行星号这个操作3次,行数由外循环控制。每行的打印操作可以看成两件事,依次是打印8个星号和换行,8个星号和换行的打印由内循环控制。流程图:如图3-29所示。代码实现:foriinrange(1,4):#3行#打印8个*forjinrange(1,9):print(*,end=)#换行 print()运行结果:*1打印如下图形:1223332求1+2!+3!+.+10!的和。3分别用单循环和双循环打印如下黑白相间的星星图形:l本章节学习了算法、程序结构、顺序结构、选择结构、循环结构异常。l能对案例进行算法分析和流程图设计,能使用程序设计三大结构进行程序设计、编写。