Python基础教程-05第五章条件、循环和其他语句_第1页
Python基础教程-05第五章条件、循环和其他语句_第2页
Python基础教程-05第五章条件、循环和其他语句_第3页
Python基础教程-05第五章条件、循环和其他语句_第4页
Python基础教程-05第五章条件、循环和其他语句_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章条件(tiáojiàn)、循环和其它Python共六十六页Contents目录(mùlù)print,import赋值魔法(mófǎ)语句块条件和条件语句循环列表推导式三人行小结共六十六页print和import01共六十六页print的逗号输出(shūchū)import导入模块导入函数导入脚本运行脚本与命令行交互共六十六页赋值魔法(mófǎ)02共六十六页序列(xùliè)解包x,y,z=1,2,3values=1,2,3函数返回值,允许返回多个值,要求赋值符号两边的变量数量(shùliàng)一致stu={'name':'Robin','girlfriend':'Marion'}key,共六十六页赋值链式赋值>>>tst=yst=[1,2,3]增量(zēnɡliànɡ)赋值>>>y+=10共六十六页语句(yǔjù)块03共六十六页语句(yǔjù)块缩排默认(mòrèn)是4个空格示例:共六十六页条件(tiáojiàn)和条件(tiáojiàn)语句04共六十六页布尔变量(biànliàng)false:False,0,空值(Null、空字符串,所有为空类型)测试(cèshì)布尔值

函数bool()共六十六页条件执行(zhíxíng)和if语句name=raw_input('Whatisyourname?')ifname.endswith('Ray')print'Hello,Mr.Ray'共六十六页else任意输入三个英文单词,按字典顺序(shùnxù)输出。elseif P71页共六十六页嵌套代码(dàimǎ)块复合(fùhé)语句嵌套语句共六十六页条件(tiáojiàn)运算关系运算符is:同一性运算符字符串和序列(xùliè)比较布尔运算符(and,or,not)注意:连接比较a<=y<=100用连接比较运算修改“单词排序”的例题。共六十六页作业(zuòyè):1.输入成绩(score),根据(gēnjù)分段规则输出等级 A:score>=90分;B:90>score>=80;C:80>score>=70;D:70>score>=60;E:score<60。2.用ifelse语句实现A,B,C三个数从大到小排序并输出。3.模拟菜单选择,根据用户输入数字,在屏幕打印显示不同的内容: 1:显示“NewFile” 2:显示“Edit” 3:显示“Run” 4:显示“Help” 其它数字:显示“Other”4.分别用列表、元组、字典实现对某个学生三门课程的成绩从大到小排列:数学分析,Python,数学建模,输出格式为:数学分析:98.50Python:97.00数学建模:86.50共六十六页score=raw_input('enteranumber:')ifscore>=90:print'A'elif90>score>=80:print'B'elif80>score>=70:print'C'elif70>score>=60:print'D'else:print'E'共六十六页共六十六页循环(xúnhuán)05共六十六页程序设计的3种基本(jīběn)结构顺序结构——是指程序流程按先后顺序执行,只有执行了前一步,才能执行后一步。例如火车在轨道上行驶,只有过了上一站点才能到达下一站点。选择结构——又称分支结构,是指程序流程可以分几条路径执行。例如在一个(yīɡè)十字路口处,可以选择向东、南、西、北几个方向行走。

循环结构——又称重复结构,是指程序流程重复执行某一段代码。例如万米跑,围着足球场跑道不停地跑,直到满足条件时(25圈)才停下来。 共六十六页语句(yǔjù)A语句(yǔjù)B顺序结构流程图条件判断语句A真语句B假选择结构流程图条件判断循环体真假循环结构流程图3种基本结构的流程图共六十六页【问题】用户输入若干个分数,求所有分数的平均分。每输入一个分数后询问是否继续输入下一个分数,回答(huídá)“yes”就继续输入下一个分数,回答“no”就停止输入分数。分析:该问题需要输入若干分数并求和,这是一个重复的过程,应使用循环结构解决。循环次数事先不确定,需根据应答“yes”、“no”来决定循环是否继续。共六十六页

#ques4_1.pyendFlag="yes"sum=0.0count=0whileendFlag[0]=='y':

x=input("请输入一个分数(fēnshù):")

sum=sum+x

count=count+1

endFlag=raw_input("继续输入吗(yesorno)?")print"\n平均分是:",sum/count共六十六页循环(xúnhuán)结构设计问题【问题】用户输入一个(yīɡè)列表,求出列表中所有正偶数之和。分析:由于不知道用户输入的具体数据及个数,因此需要在循环结构中进行判断和累加。共六十六页#ques4_1.pyli=input('请输入一个列表:')sum=0forxinli:ifx>0andx%2==0:sum+=xprint'sum=',sum程序输入及运行(yùnxíng)结果:请输入一个列表:[2,3,4,-5,6,12]sum=24共六十六页循环结构(jiégòu)概述循环结构是一种(yīzhǒnɡ)重复执行的程序结构。实际应用中,常会碰到一些需要重复执行的步骤,如级数求和、统计报表等等。例如:(1)计算1+2+3+…+100,这是一个级数求和问题,需要重复执行100次,对100个数依次进行累加。(2)假设1个班级中有n名同学,统计男同学和女同学各有多少名。该问题的求解需要重复执行n次,对每1个同学依次进行判断,同时统计男同学和女同学的人数。(3)给定2个整数,求它们的最大公约数和最小公倍数。例如:给定6和9,求最大公约数时,循环过程从6依次递减至1,当循环到3时,判断得6和9都能被3整除,于是终止循环,求得最大公约数是3.;求最小公倍数时,循环过程从9依次递增至54,当循环到18时,判断得18同时能被6和9整除,于是终止循环,求得最小公倍数是18。Python提供了两种基本的循环结构语句——while语句、for语句。共六十六页while语句(yǔjù)while表达式: 循环体表达式循环体真(非零)假(零)while表达式: 循环体else: else子句(zǐjù)共六十六页(1)while语句是一个条件循环语句,即首先计算表达式,根据表达式值的真、假来决定是否继续循环。(2)while语句的语法与if语句类似,要使用缩进来分隔子句。(3)while语句的条件表达式不需要(xūyào)用括号括起来,但是表达式后面必须有冒号。(4)使用while语句编程通常会遇到两种题型,一种是循环次数事先确定的问题;一种是循环次数事先不确定的问题。说明(shuōmíng):共六十六页while语句(yǔjù)用于有限循环【分析】该问题使用循环结构解决,由于不确定用户(yònghù)即将输入几个正整数,因此属于不确定循环次数的问题。【例】编程从键盘输入若干正整数,求所有输入整数之和。当输入整数为负数时,结束该操作。共六十六页#Exp4_1.pyprint'请输入若干正整数进行求和操作(cāozuò),当输入负数时结束:'s=0x=input("请输入一个整数:")whilex>=0:s=s+xx=input("请输入一个整数:")print'整数之和=',s程序(chéngxù):共六十六页【例】编程从键盘输入若干个字符,一边输入一边输出(shūchū),当输入“#”字符时终止该操作。【分析】(1)本题使用(shǐyòng)循环结构解决,每次循环从键盘输入一个字符,直到输入为“#”字符时停止循环。(2)由于输入的字符个数无法确定,因此循环次数不确定。

是否共六十六页a=raw_input('请输入字符,如果输入#号则结束输入操作:')whilea!='#': #判断输入的是否是井号 print'您输入的字符是:',a #打印输入的字符 #以下语句是再次(zàicì)输入一个新的字符 a=raw_input('请输入字符,如果输入#号则结束输入操作:')else: print'输入结束'提问(tíwèn):(1)循环结束后,变量a中的值是什么?(2)如果循环体中没有下面这条语句会怎么样?a=raw_input('请输入字符,如果输入#号则结束输入操作:')共六十六页while语句解决(jiějué)确定循环次数的问题【例】编程计算(jìsuàn)1+2+3+…+100的值。分析:本题使用循环结构解决,每循环一次累加一个整数值,整数的取值范围为1~100。由于整数的范围是确定的,因此循环次数也是确定的。共六十六页程序(chéngxù):#Exp4_3.pyi,s=1,0whilei<=100: s=s+i i+=1print'1+2+3+...+100=',s框图(kuàngtú):共六十六页分析:本题使用循环结构解决,每循环一次输出一个列表元素值,由于列表定义(dìngyì)后,其长度是已知的,因此循环次数也是确定的。【例】编程依次输出列表(lièbiǎo)中个元素的值。共六十六页while语句解决(jiějué)确定循环次数的问题#Exp4_4.pya_list=['a','b','mpilgrim','z','example']a_len=len(a_list)i=0whilei<a_len:print'列表(lièbiǎo)的第',i+1,'个元素是:',a_list[i]i+=1共六十六页上机作业(zuòyè):1.计算,参考值:S=1.7182822.编程求斐波拉契数列的前20项,已知该数列的第一、二项分别是0、1,从第三项开始,每一项都是前两项之和。例如:0,1,1,2,3,5,8,13……3.求1~100之间所有的素数(sùshù),并统计素数(sùshù)的个数。共六十六页共六十六页【例】求以下(yǐxià)表达式的值,其中n值从键盘输入。参考值:当n=11时,s=1.833333。共六十六页【分析】(1)以上问题属于数学中的级数求和问题,是使用循环结构解决的一类常见问题。(2)级数求和问题编程的重点在于通过观察表达式的规律(guīlǜ),分析每次循环都要完成的事件。通常将这些事件进行局部分解,称为“通式”。该题的通式有以下几个:(1)分母(fēnmǔ)的通式:(2)变量i的通式:(3)当前项的通式:(4)求和的通式:mu=mu+ii=i+1item=1.0/musu=su+item共六十六页i=1mu=0s=0.0n=input('请输入n值:')#或用书上的代码whilei<=n:#判断是否计算到表达式的最后一项 mu=mu+i#求分母的通式 i+=1 #i自增的通式

item=1.0/mu #求当前项的通式 su=su+item

#求和(qiúhé)的通式

print'sum=',su

#循环结束后,打印总和程序(chéngxù):提问:(1)变量i、mu、su

的初值只能是1、0、0.0吗?(2)循环体内语句的先后顺序可以随意调换吗?共六十六页【例】输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方(lìfāng)和等于该数本身。例如:153是水仙花数,因为153=13+53+33。【分析】(1)本题需要对100~999范围内的所有数一一进行判断。(2)本题的变量i既是循环变量,同时也是被判断的数。(3)每次循环过程中需要用if语句进行条件判断。因此本题也是循环嵌套选择(xuǎnzé)的结构。共六十六页提问(tíwèn):变量i是一个(yīɡè)三位整数,例如i=123(1)请写出分离i的百位数的表达式。(2)请写出分离i的十位数的表达式。(3)请写出分离i的个位数的表达式。i=100print('所有的水仙花数是:')whilei<=999:#判断循环是否结束 bai=int(i/100) #分离i的百位数 shi=int((i%100)/10) #分离i的十位数 ge=int(i%10) #分离i的个位数 ifbai**3+shi**3+ge**3==i:#判断条件 printi #打印水仙花数 i+=1#变量i自增程序:共六十六页 for语句(yǔjù)for取值in序列(xùliè): 循环体循环体是否Python提供的另一个循环机制是for语句,它提供了Python中最强大的循环结构。Python中的for语句与传统的for语句不太一样,它接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中的一个元素。还有值未取吗?共六十六页列表、元组、字符串都是序列。序列类型有着相同的访问模式:它的每一个元素(yuánsù)可以通过指定一个偏移量的方式得到;而多个元素(yuánsù)可以通过切片操作的方式得到。序列操作可以通过很多内建函数来实现,比如求序列长度len();求最大值max();最小值min();求和sum();排序sorted()等,以上这些内建函数的实现都离不开循环结构。for语句用于序列(xùliè)类型共六十六页【例】创建(chuàngjiàn)1个由分数构成的列表,求出所有分数的平均分。方法一:使用(shǐyòng)Python的内建函数sum()求和,然后再求平均分。>>>score=[70,90,78,85,97,94,65,80]>>>score[70,90,78,85,97,94,65,80]>>>aver=sum(score)/8.0>>>aver82.375共六十六页方法二:使用for语句,通过序列索引(suǒyǐn)进行迭代。【分析】(1)以上列表score有8个元素,这些元素的序列索引范围是“0~7”。(2)本题用到成员测试运算符“in”,如果成员在序列中,测试结果为“True”,否则(fǒuzé)为“False”。(3)本题用到计算序列长度的内建函数len()。(4)本题用到内建函数range(),range()函数的完整语法要求提供2个或3个整型参数:range(start,end,step)共六十六页score=[70,90,78,85,97,94,65,80]print'所有的分数值是:'printscore#打印列表sum=0#以下for语句的i是迭代(diédài)项,内建函数len(score)的执行结果是8#内建函数range(8)返回一个列表[0,1,2,3,4,56,7]#运算符in是判断迭代项i是否还在列表[0,1,23,4,5,67]中foriinrange(len(score)): sum+=score[i]#循环体——对列表元素求和aver=sum/8.0#循环之后,求平均值print'\naver=',aver程序(chéngxù):共六十六页方法三:使用for语句(yǔjù),通过序列项运算。score=[70,90,78,85,97,94,65,80]print'所有的分数值是:'printscore#打印列表sum=0#以下(yǐxià)for语句使用运算符in判断迭代项i是否在列表score中foriinscore: sum+=i#循环体——对列表元素求和aver=sum/8.0#循环之后,求平均值print'\naver=',aver程序:共六十六页循环(xúnhuán)的嵌套是指在一个循环(xúnhuán)中又包含另外一个完整的循环(xúnhuán),即循环(xúnhuán)体中又包含循环(xúnhuán)语句。while循环(xúnhuán)和for循环(xúnhuán)可以相互嵌套。循环嵌套的执行过程是:一次外循环对应着完整的一轮内循环。利用(lìyòng)for语句实现双层循环嵌套共六十六页【例】使用for循环(xúnhuán)的嵌套结构打印9-9乘法表【分析(fēnxī)】9-9乘法表由9行组成,每行的列数有规律地递增。通过观察可以看出,表达式“X*Y=Z”中的X是内循环变量j的取值,Y是外循环变量i的取值,Z是X乘以Y的结果。共六十六页foriinrange(1,10,1):#控制(kòngzhì)行 forjinrange(1,i+1,1):#控制列 printi,'*',j,'=',i*j,'\t’ print'\n'#每行末尾的换行程序(chéngxù):共六十六页【课堂练习】使用for循环的嵌套结构(jiégòu)编程,打印以下图形。(1)矩形(2)直角三角形(3)正三角形共六十六页Python提供了一条提前结束循环的语句——break语句。当在循环过程中,某个条件被触发(一般(yībān)通过if语句检查),需要立即停止循环时使用。break语句可以用在while和for循环中。break语句(yǔjù)

共六十六页【例】求200以内(yǐnèi)能被17整除的最大正整数。【分析】这个查找过程将以递减的方式遍历200至1之间的整数,当找到第1个能被17整除的数时,循环过程立即停止,后续还没有遍历的数将无需再进行判断,因此可以使用(shǐyòng)break语句将循环提前终止。foriinrange(200,1,-1): ifi%17==0: breakprint('200以内能被17整除的最大数是:',i)程序:共六十六页continute语句(yǔjù)

continue语句的作用(zuòyòng)是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,继续执行下一次循环。共六十六页【例】求200以内能被17整除(zhěngchú)的所有正整数,并统计满足条件的数的个数。

#Exp4_17_2.pys=0print'200以内能被17整除(zhěngchú)的所有数是:'foriinrange(1,201,1): ifi%17!=0: continue printi, s+=1

print'\n数的个数是:',s共六十六页作业(zuòyè)把上次作业(zuòyè)改成for循环实现共六十六页循环(xúnhuán)中的els

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论