您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > Python基础教程--05第五章条件循环和其他语句
第五章条件、循环和其它PythonContents目录print,import赋值魔法语句块条件和条件语句循环列表推导式三人行小结print和import01•print的逗号输出•import–导入模块–导入函数–导入脚本运行•脚本与命令行交互赋值魔法02序列解包•x,y,z=1,2,3•values=1,2,3•函数返回值,允许返回多个值,要求赋值符号两边的变量数量一致–stu={'name':'Robin','girlfriend':'Marion'}–key,赋值•链式赋值–tst=yst=[1,2,3]•增量赋值–y+=10语句块03语句块•缩排•默认是4个空格•示例:条件和条件语句04布尔变量•false:–False,0,空值(Null、空字符串,所有为空类型)•测试布尔值函数bool()条件执行和if语句•name=raw_input('Whatisyourname?')•ifname.endswith('Ray')–print'Hello,Mr.Ray'else•任意输入三个英文单词,按字典顺序输出。•elseif•P71页嵌套代码块•复合语句•嵌套语句条件运算•关系运算符•is:同一性运算符•字符串和序列比较•布尔运算符(and,or,not)•注意:连接比较–a=y=100–用连接比较运算修改“单词排序”的例题。作业:•1.输入成绩(score),根据分段规则输出等级•A:score=90分;B:90score=80;C:80score=70;D:70score=60;E:score60。•2.用ifelse语句实现A,B,C三个数从大到小排序并输出。•3.模拟菜单选择,根据用户输入数字,在屏幕打印显示不同的内容:•1:显示“NewFile”•2:显示“Edit”•3:显示“Run”•4:显示“Help”•其它数字:显示“Other”•4.分别用列表、元组、字典实现对某个学生三门课程的成绩从大到小排列:数学分析,Python,数学建模,•输出格式为:•数学分析:98.50•Python:97.00•数学建模:86.50•score=raw_input('enteranumber:')•ifscore=90:•print'A'•elif90score=80:•print'B'•elif80score=70:•print'C'•elif70score=60:•print'D'•else:•print'E'循环05程序设计的3种基本结构–顺序结构——是指程序流程按先后顺序执行,只有执行了前一步,才能执行后一步。例如火车在轨道上行驶,只有过了上一站点才能到达下一站点。–选择结构——又称分支结构,是指程序流程可以分几条路径执行。例如在一个十字路口处,可以选择向东、南、西、北几个方向行走。–循环结构——又称重复结构,是指程序流程重复执行某一段代码。例如万米跑,围着足球场跑道不停地跑,直到满足条件时(25圈)才停下来。语句A语句B顺序结构流程图条件判断语句A真语句B假选择结构流程图条件判断循环体真假循环结构流程图3种基本结构的流程图【问题】用户输入若干个分数,求所有分数的平均分。每输入一个分数后询问是否继续输入下一个分数,回答“yes”就继续输入下一个分数,回答“no”就停止输入分数。分析:该问题需要输入若干分数并求和,这是一个重复的过程,应使用循环结构解决。循环次数事先不确定,需根据应答“yes”、“no”来决定循环是否继续。#ques4_1.pyendFlag=yessum=0.0count=0whileendFlag[0]=='y':x=input(请输入一个分数:)sum=sum+xcount=count+1endFlag=raw_input(继续输入吗(yesorno)?)print\n平均分是:,sum/count循环结构设计问题【问题】用户输入一个列表,求出列表中所有正偶数之和。分析:由于不知道用户输入的具体数据及个数,因此需要在循环结构中进行判断和累加。#ques4_1.pyli=input('请输入一个列表:')sum=0forxinli:ifx0andx%2==0:sum+=xprint'sum=',sum程序输入及运行结果:请输入一个列表:[2,3,4,-5,6,12]sum=24图4-1求列表的正偶数之和开始结束FalseTrue为sum赋初值0列表li中还有元素未取吗?将列表元素累加到sum中输入列表liFalseTrue取出的元素x是正偶数吗?输出sum循环结构概述•循环结构是一种重复执行的程序结构。实际应用中,常会碰到一些需要重复执行的步骤,如级数求和、统计报表等等。例如:(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语句while表达式:循环体表达式循环体真(非零)假(零)while表达式:循环体else:else子句(1)while语句是一个条件循环语句,即首先计算表达式,根据表达式值的真、假来决定是否继续循环。(2)while语句的语法与if语句类似,要使用缩进来分隔子句。(3)while语句的条件表达式不需要用括号括起来,但是表达式后面必须有冒号。(4)使用while语句编程通常会遇到两种题型,一种是循环次数事先确定的问题;一种是循环次数事先不确定的问题。说明:while语句用于有限循环【分析】该问题使用循环结构解决,由于不确定用户即将输入几个正整数,因此属于不确定循环次数的问题。【例】编程从键盘输入若干正整数,求所有输入整数之和。当输入整数为负数时,结束该操作。x=0?将x累加到s中图4-3累加若干整数值的框图开始结束FalseTrue输入第一个整数x输入后续整数x输出s#Exp4_1.pyprint'请输入若干正整数进行求和操作,当输入负数时结束:'s=0x=input(请输入一个整数:)whilex=0:s=s+xx=input(请输入一个整数:)print'整数之和=',s程序:【例】编程从键盘输入若干个字符,一边输入一边输出,当输入“#”字符时终止该操作。【分析】(1)本题使用循环结构解决,每次循环从键盘输入一个字符,直到输入为“#”字符时停止循环。(2)由于输入的字符个数无法确定,因此循环次数不确定。是否a=raw_input('请输入字符,如果输入#号则结束输入操作:')whilea!='#':#判断输入的是否是井号print'您输入的字符是:',a#打印输入的字符#以下语句是再次输入一个新的字符a=raw_input('请输入字符,如果输入#号则结束输入操作:')else:print'输入结束'提问:(1)循环结束后,变量a中的值是什么?(2)如果循环体中没有下面这条语句会怎么样?a=raw_input('请输入字符,如果输入#号则结束输入操作:')while语句解决确定循环次数的问题【例】编程计算1+2+3+…+100的值。分析:本题使用循环结构解决,每循环一次累加一个整数值,整数的取值范围为1~100。由于整数的范围是确定的,因此循环次数也是确定的。程序:#Exp4_3.pyi,s=1,0whilei=100:s=s+ii+=1print'1+2+3+...+100=',si=100?将i累加到s中图4-5从1累加到100的框图i、s赋初值1、0开始i自增1结束FalseTrue输出s框图:分析:本题使用循环结构解决,每循环一次输出一个列表元素值,由于列表定义后,其长度是已知的,因此循环次数也是确定的。【例】编程依次输出列表中个元素的值。while语句解决确定循环次数的问题#Exp4_4.pya_list=['a','b','mpilgrim','z','example']a_len=len(a_list)i=0whileia_len:print'列表的第',i+1,'个元素是:',a_list[i]i+=1图4-6依次输出列表元素的框图创建列表a_list开始i自增1结束FalseTrue输出列表元素a_len,i赋初值i小于列表长度吗?上机作业:1.计算,参考值:S=1.71828211111*21*2*31*2*3*50S2.编程求斐波拉契数列的前20项,已知该数列的第一、二项分别是0、1,从第三项开始,每一项都是前两项之和。例如:0,1,1,2,3,5,8,13……3.求1~100之间所有的素数,并统计素数的个数。【例】求以下表达式的值,其中n值从键盘输入。参考值:当n=11时,s=1.833333。ns321132112111【分析】(1)以上问题属于数学中的级数求和问题,是使用循环结构解决的一类常见问题。(2)级数求和问题编程的重点在于通过观察表达式的规律,分析每次循环都要完成的事件。通常将这些事件进行局部分解,称为“通式”。该题的通式有以下几个:(1)分母的通式:(2)变量i的通式:(3)当前项的通式:(4)求和的通式:mu=mu+ii=i+1item=1.0/musu=su+itemi=1mu=0s=0.0n=input('请输入n值:')#或用书上的代码whilei=n:#判断是否计算到表达式的最后一项mu=mu+i#求分母的通式i+=1#i自增的通式item=1.0/mu#求当前项的通式su=su+item#求和的通式print'sum=',su#循环结束后,打印总和程序:提问:(1)变量i、mu、su的初值只能是1、0、0.0吗?(2)循环体内语句的先后顺序可以随意调换吗?【例】输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153=13+53+33。【分析】(1)本题需要对100~999范围内的所有数一一进行判断。(2)本题的变量i既是循环变量,同时也是被判断的数。(3)每次循环过程中需要用if语句进行条件判断。因此本题也是循环嵌套选择的结构。提问:变量i是一个三位整数,例如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语句for取值in序列:循环体循环体是否Python提供的另一个循环机制是for语句,它提供了Python中最强大的循环结构。Python中的for语句与传统的for语句不太一样,它接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中的一个元素。还有值未取吗?•列表、元组、字符串都是序列。序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到;而多个元素可以通过切片操作的方式得到。•序列操作可以通过很多内建函数来实现,比如求序列长度len();求最大值max();最小值min();求和sum();排序sorted()等,以上这些内建函数的实现都离不开循环结构。for语句用于序列类型【例】创建1个由分数构成的列表,求出所有
本文标题:Python基础教程--05第五章条件循环和其他语句
链接地址:https://www.777doc.com/doc-2853882 .html