版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章
三大流程控制结构序《Python数据分析与应用》特征:有穷性确定性评价标准:正确性可读性健壮性(Robust,鲁棒性)高效率与低存储要求定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。数据结构+算法=程序算法可执行性有输入、输出算法规范的方法:自然语言、流程图、N-S结构流程图、伪代码。(1)自然语言:人们日常生活中的语言,用自然语言通俗易懂,容易被人接受。(2)流程图的基本构成:起至框输入输出判断框处理框或流程线连接点注释框流程图的三种基本结构aABb顺序结构先执行A,
再执行B.若P为真,则执行A,
否则执行B.若P为真,则执行A,
否则跳过A.aAYNBpabAPNYb选择结构流程图的三种基本结构ApNY当型循环结构abApYNba直到型循环先执行A,再判断,若P为真,反复执行A,P为假时出循环。当P为真,反复执行A,P为假时出循环。N-S流程图去掉了箭头,算法写在一个矩形框里。它也有三种结构:顺序、选择和循环(3)N-S结构流程图AB顺序结构pyesnoAB选择结构当p成立A当型循环A
当p成立直到型循环
任何程序均可以由“顺序”、“选择”和“循环”这三种基本结构通过有限次的组合与嵌套来描述。
任何程序设计语言均由这三种基本结构组成,其差别在于具体语法的形式不同,而原理是相同的。程序的基本结构共同特点:单入口、单出口三种结构之间可以是顺序关系、平行关系,也可以互相嵌套,通过结构之间的复合形成复杂的关系。三种基本结构的特点数据的输入和输出(InputandOutput)
一般一个程序分为三步进行:输入原始数据、进行计算处理和输出运算结果
。(1)标准输入input()
input([提示字符串])input()在Python2.x中,函数返回结果的类型由输入时使用的界定符来决定。>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:5
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:'5'
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:[1,2,3]
>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:(1,2,3)input()
如果要输入数值类型数据,可以使用类型转换函数将字符串转换为数值。>>>x=int(input(“pleaseinputyourinput:”))pleaseinputyourinput:5>>>print(type(x))<class'int'>说明:x接受的是字符串5,通过int()函数将字符串转换为整型。(2)标准输出在Python2.x中使用的是print语句输出在Python3.x中使用的是print()函数输出print()函数的一般形式为:print([输出项1,输出项2,....,输出项n][,sep=分隔符][,end=结束符])说明:输出项之间用逗号分隔,没有输出项时输出一个空行。sep表示输出时候各个输出项之间的分隔符,end表示输出时的结束符。(2)标准输出print函数从左求出至右各输出项的值,并将各输出项的值依次显示在屏幕的同一行上。>>>x,y=2,3>>>print(x,y)23>>>print(x,y,sep=':')2:3>>>print(x,y,sep=':',end='%)2:3%(3)格式化输出1.字符串格式化%格式控制字符串%(输出项1,输出项2,...输出项)(1)常规字符:包括可显示的字符和用转义字符表示的字符。(2)格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。例如:print(“sum=%d”%x)print()格式化说明4d或i十进制格式o八进制格式x、X十六进制格式c一个字符格式s字符串格式f实数格式e或E指数格式g或G1235678e和f中较短一种格式2.附加格式说明符m:域宽,十进制整数,用以描述输出数据所占宽度。n:附加域宽,十进制整数,用于指定实型数据小数部分的输出位数。—:输出数据左对齐,默认为右对齐+:输出正数时,也以+号开头#:作为o,x的前缀时,输出结果前面加上前导符号0,,0x格式化输出:>>>year=2017>>>month=1>>>day=28>>print('%04d-%02d-%02d'%(year,month,day))2017-01-28
>>>value=8.123>>print('%06.2f'%value)008.12>>>print('%d'%10)10>>>print('%o'%10)12>>>print('%02x'%10)0a>>>print('%04X'%10)000A>>>print('%.2e'%1.2888)1.29e+00顺序程序设计举例【例1】从键盘输入一个3位整数,分离出它的个位、十位和百位并分别在屏幕输出。x=int(input(“请输入一个3位整数:”))a=x//100b=(x-a*100)//10c=x%10print(“百位=%d,十位=%d,个位=%d”%(a,b,c))程序运行结果如下:请输入一个3位整数:235百位=2,十位=3,个位=5顺序程序设计举例
例2:已知三角形三条边的边长(为简单起见,假设这三条边可以构成三角形),求三角形的面积。分析:三角形面积=其中,a、b、c是三角形三边的边长,p是三角形周长的一半importmatha=float(input("请输入三角形的边长a:"))b=float(input("请输入三角形的边长b:"))c=float(input("请输入三角形的边长c:"))p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c));print(str.format(“三角形的面积=%f”%area))学习要点:1、理解算法的概念。2、掌握描述算法的图形工具:流程图、N-S图。掌握使用N-S图描述算法。3、掌握程序流程的三种基本结构:顺序结构、选择结构、循环结构。4、掌握常用的I/O函数,重点掌握input、print函数的控制格式。上机作业:1.输入长方形的长和宽,计算面积并输出。2.从键盘输入一个3位整数n,输出其逆序数m。例如输入n=128,则m=821。3.输入三个浮点数,求它们的平均值并保留一位小数输出。第4章
三大流程控制结构序《Python数据分析与应用》单分支选择结构形式:if表达式:
语句1.简单的if语句expATFexpyesnoAc=input("Pleaseinputcharacter:")ifc>='a'andc<='z':
c=ord(c)-32print("%c\n"%c)例:将小写字母转换为大写字母思考:若将大写字母转换为小写字母.单分支选择结构例:输入三个整数x,y,z,把这三个数由小到大输出x,y,z=eval(input(‘请输入x、y、z:’))ifx>y:
x,y=y,xifx>z:
x,z=z,xify>z:
y,z=z,yprint(x,y,z)输出x,y,x的值交换x,zx>z交换x,yx>y输入x,y,zYNYN交换y,zy>zYN思考:如果要将三个数从大到小输出,程序该如何编写?双分支选择结构形式:
if表达式:
语句Aelse:语句B1.语句的一般语法格式:if---elseexpABTFexpyesnoAB例:求输入的两个整数的最小值x,y=eval(input(‘请输入x、y:’))ifa<b:min=aelse:min=bprintf(“Theminimumis%d”%min)输入a,bmin=a;a<bYNmin=b;输出最小值min例:一个5位数,判断它是不是回文数,即12321
是回文数,个位与万位相同,十位与千位相同。
分析:分解出每一位数(万位、千位、十位和个位),然后判断。
x=int(input('请输入x:'))wan=x//10000;qian=x%10000//1000;shi=x%100//10;ge=x%10;ifge==wanandshi==qian:print("Itispalindromicnumber!\n")else:print("Itisnotpalindromicnumber!\n")shi=x%100//10输出不是回文N输出是回文Yge=x%10qian=x%10000//1000wan=x//10000输入xwan==geandqian==shi多分支选择结构
if语句的扩展形式:if-elseif-elseIfexp1:
选择体1elifexp2:
选择体2……elifexpn:
选择体nelse:
选择体n+1exp1选择1TFexp2exp3选择n+1选择3选择2TTFF……例:编写程序计算函数值2x+1(1<=x<10)3x+1(x>=10)y=x(x<1)x=int(input("pleaseinputx:"))ifx<1:y=xelifx<10:y=2*x+1else:y=3*x+1print("Theresultis%d"%y)输入xy=x;x<1Y输出函数值yYy=2x+1y=3x+11<=xandx<10NNif表达式1:
if表达式2:
语句1
else:
语句2else:
if表达式3:
语句3else:
语句4内嵌if内嵌if选择结构嵌套if语句的嵌套:如果if的内嵌语句中又使用了一个if语句,则构成if语句的嵌套。例:购买地铁车票的规定如下:乘1-4站,3元/位;乘5-9站,4元/位;乘9站以上,5元/位。输入人数、站数,输出应付款。Falsem<=4True开始输出应付款结束输入人数n、站数mm<=9pay=4*npay=5*nTrueFalsen,m=input(‘请输入人数,站数:')ifm<=4:pay=3*nelse:
ifm<=9:pay=4*n
else:pay=5*nprint('应付款:',pay)例:输入一个整数,判断它是否为水仙花数。所谓水仙花数,是指这样的一些三位整数:各位数字的立方和等于该数本身,例如153=13+53+33,因此153是水仙花数。选择结构程序举例x=input('请输入三位整数x:')a=x//100b=(x-a*100)//10c=x-100*a-10*bifx==a**3+b**3+c**3:print(x,'是水仙花数')else:print(x,'不是水仙花数')第4章
三大流程控制结构《Python数据分析与应用》循环结构的基本类型
当型循环while,forexpAFT5.1while语句(当型循环)特点:先判断,再执行while语句的语法格式:注意:
循环体可能一次也不执行。
循环体可为任意类型语句。
退出while循环的情况:exp不成立循环体内遇break,return,exit等。exp循环体FTwhileexp:
循环体在while语句中使用else子句Python可以在循环语句中使用else子句,即构成了while.......else循环结构。whileexp:
循环体else:
语句while....else循环结构例如:count=int(input())whilecount<5: print(count,”islessthan5”) count=count+1else: print(count,”isnotlessthan5”)程序运行结果88isnotlessthan5例:求1)问题分析:
sum,n=0,1n<=100sum=sum+nn=n+1YN输出sum结束开始sum=1+2+…+100
100个数
循环语句:循环变量初始化:循环控制条件:循环体:循环变量的修改:n=1n<=100sum+=nn=n+1例:求sum,n=0,1whilen<=100:
sum=sum+n
n=n+1
printf("1+2+3+....+100=",sum)循环语句四要素:循环(控制)变量初始化循环控制条件循环体(关键是找规律)循环变量的修改运行结果:1+2+3.......+100=5050while语句对于while语句的用法,要注意以下几点:(1)如果while后面表达式的值一开始就为假,则循环体一次也不执行。(2)循环体中的语句可以任意类型的语句。(3)遇到下列情况,退出while循环:
A表达式不成立
B循环体内遇到break、return语句。
例:从键盘输入若干个数,求所有正数之和。当输入负数时,程序结束。输入xsum=0x>=0sum=sum+xYN输出sum结束开始
循环语句四要素:循环变量初始化:循环控制条件:循环体:循环变量的修改:输入x的值x>=0sum=sum+x
输入x的值输入x
例:从键盘输入若干个数,求所有正数之和。当输入0或负数时,程序结束sum=0x=input(“请输入正整数:")whilex>=0: sum=sum+x x=input(“请输入正整数:")
printf("sum=",sum)例题:输入一个正整数x,如果x满足0<x<99999,则输出x是几位数并输出x个位上的数字。x=int(input(“Pleaseinputx:”);ifx>=0andx<99999; i=x n=0whilei>0: i=i//10 n=n+1 a=x%10 print(“%d是%d位数,它的个位上数字是”%(x,n,a))else:print(“输入错误!”)5.1while语句——说明while语句之前必须预先设置判断的初始条件
防止“死循环”的发生在循环体中必须有使循环趋向结束的操作,即在循环体中要有能让逻辑表达式值改变的语句
正确使用缩进当循环体中含多条语句时,需用缩进这些多条语句,而且缩进一定要符合逻辑关系在循环体中,语句的先后位置必须符合逻辑否则会影响运算结果。5.2for语句结构1.for语句一般形式:for目标变量in序列对象:
循环体语句说明:
for语句的首行定义了目标变量和遍历的序列对象,后面是需要重复执行的语句块。语句块中的语句要向右缩进,且缩进量要一致。注意:(1)for语句是通过遍历任意序列的元素来建立循环的。(2)for语句也支持一个可选的else块,一般格式如下:
for目标变量in序列对象:
语句块 else:
语句2.range对象在for循环中的应用range函数返回的是可迭代对象,range()函数的一般格式为:
range([start,]end[,step])
rang()函数共有三个参数,start和step是可选的,start表示开始,默认值为0,end表示结束,step表示每次跳跃的间距,默认值为1。函数的功能是从一个start参数的值开始,到end参数的值结束的数字序列。传递一个参数的range()函数:>>>foriinrange(5): print(i)传递两个参数的range()函数:>>>foriinrange(2,4): print(i)传递三个参数的range()函数:>>>foriinrange(2,20,3): print(i)range()例用for循环求sum=0foriinrange(101): sum=sum+iprint(“1+2+3+....+100”,sum)sum=0foriinrang(101):sum=sum+i输出summ=int(input(“请输入要判断的正整数m”))flag=1foriinrange(2,m): ifm%i==0: flag=0 i=mifflag==1:print(“%d是素数”%m)else: print(“%d不是素数”%m)例判断m是否为素数。5.3循环嵌套
循环的嵌套,又称多层循环,应用于多个变量同时变化的情况。说明:1.外层循环可包含两个以上内循环
2.嵌套的循环的执行流程5.3循环嵌套
注意:while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。
外循环执行了6次内循环执行10次循环正常结束时,内循环执行了
10×6=60次foriinrange(6):forjinrange(10):……
5.3循环嵌套循环语句while和for可以相互嵌套。在使用循环嵌套时,应注意以下几个问题:(1)外层循环和内层循环控制变量不能同名,以免造成混乱。(2)循环嵌套的缩进在逻辑上一定要注意,以保证逻辑上的重要性。(3)循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环,如图5.10所示的循环嵌套都是合法的嵌套形式。循环嵌套在使用中的重点内容能够正确判断内层循环体的范围能够正确判断内层循环体的执行次数注意内层循环的初值设定能正确处理内层循环与外层循环变量的关系5.3循环嵌套例:输出九九表,输出格式如下:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81foriinrange(1,10,1): forjinrange(1,i+1,1): print(“%d*%d=%2d”%(j,i,i*j),end=””) print(“”)例:找出所有的三位数,要求它的各位数字的立方和正好等于这个三位数。例如:153=13+53+33就是这样的数。foriinrange(1,10):forjinrange(0,10):forkinrange(0,10):ifi**3+j**3+k**3==i*100+j*10+k:print("%d%d%d"%(i,j,k))程序运行结果:153370371407例:求100~200之间的全部素数。print("100~200之间的素数有:")forminrange(100,200):
flag=1foriinrange(2,m):ifm%i==0:flag=0 i=mifflag==1:print(m,end="")
5.4循环控制语句
有时候我们需要在循环体中提前跳出循环,或者在某种条件满足时,不执行循环体中的某些语句而立即从头开始新的一轮循环,这时就要用到循环控制语句break、continue和pass语句。一般格式
break功能
break语句用在循环体内,迫使所在循环立即终止,即跳出所在循环体,继续执行循环结构后面的语句。(1)break语句……break……expNY分析:找出m与n中较小的一个,则最大公约数必在1与较小整数的范围内。使用for语句,循环变量i从较小整数变化到1。一旦循环控制变量i同时能被m与n整除,则i就是最大公约数,然后使用break语句强制退出循环。求两个整数m与n的最大公约数。m,n=eval(input("请输入两个整数:"))ifm<n:min=melse:min=nforiinrange(min,1,-1):ifm%i==0andn%i==0:print("最大公约数是:",i)break一般格式
continue功能在循环语句中强行提前结束本次循环,
而不是终止循环。(2)continue语句……continue……expNY例求1~100之间的全部奇数之和。程序如下:x=y=0whileTrue:x+=1ifx%2==0:continueelifx>100:break
else:y+=xprint("y=",y)程序运行结果:y=2500(3)pass语句pass语句是一个空语句,它不做任何操作,代表一个空操作,在特别的时候用来保证格式或是语义的完整性。例如下面的循环语句:foriinrange(5):pass该语句的确会循环5次,但是除了循环本身之外,它什么也没做。例:pass语句应用:逐个输出“Python”字符串中的字符。forletterin"Python":ifletter=="o":passprint("Thisispassblock")print("CurrentLetter:",letter)print("End!")程序运行结果:CurrentLetter:PCurrentLetter:yCurrentLetter:tCurrentLetter:hThisispassblockCurrentLetter:oCurrentLetter:nEnd!5.5循环结构程序举例例:利用下面的公式求的近似值,要求累加到最后一项小于10-6为止。程序如下:importmaths=1n=1.0t=1.0pi=0whilemath.fabs(t)>=1e-6:pi=pi+tn=n+2s=-st=s/npi=pi*4print("PI=%f"%pi)程序运行结果:PI=3.141591例:“百钱百鸡”问题。公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡、母鸡、小鸡都
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职幼儿教育(幼儿思维能力培养)试题及答案
- 2025年中职葡萄酒文化与营销(葡萄酒文化传播)试题及答案
- 2025年高职第三学年(虚拟现实技术应用)VR项目开发阶段测试题及答案
- 2025年中职(仓储管理综合实训)运营实操试题及答案
- 巴塞罗那介绍英语
- 中国科学技术大学简介
- 养老院老人生活娱乐设施管理制度
- 养老院老人康复理疗师职业发展规划制度
- 养老院老人健康监测人员晋升制度
- 养老院安全巡查制度
- GB/T 4074.6-2024绕组线试验方法第6部分:热性能
- DB32-T 4111-2021 预应力混凝土实心方桩基础技术规程
- 不同时代的流行音乐
- 医疗卫生机构6S常态化管理打分表
- 几种常用潜流人工湿地剖面图
- vpap iv st说明总体操作界面
- 2023人事年度工作计划七篇
- LY/T 1692-2007转基因森林植物及其产品安全性评价技术规程
- GB/T 20145-2006灯和灯系统的光生物安全性
- 螺纹的基础知识
- 蜂窝煤成型机课程设计说明书
评论
0/150
提交评论