版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章开始Python程序设计常州工业职业技术学院19五月20261Python程序设计丁辉袁凯烽商俊燕韩少勇范晓玲郝亚平王霞俊吴春晖目录
Contents01顺序结构程序设计02分支(选择)结构程序设计03循环结构程序设计04小结2顺序结构程序设计011.程序设计4程序设计就是根据问题的要求,设计解决问题的算法并采用某种语言编写程序的过程。5输入数据分析、输出结果分析、处理过程(算法),称之为IPO程序设计模式,I(Input)输入、O(Output)输出、P(Process)处理。2.IPO程序设计模式程序设计的关键是对问题进行分析,弄清楚问题的输入数据是什么?需要得到什么结果?重点是如何根据输入数据获得输出结果,也就是如何对输入数据进行处理,获得最后的结果,这个处理过程称为算法。输入I(草)处理P(牛)输出O(奶、牛肉等)6【例3-1】已知圆柱体的底半径r=3.5,高h=6.7,请编程计算圆柱体的体积和表面积。①采用IPO程序设计模式分析如下:I(输入数据):底半径r=3.5,高h=6.7,2个输入数据。O(输出结果):圆柱体的体积v和表面积s,2个输出结果。P(处理过程(算法))(1)计算底面积s1=πr2,(2)计算体积v=s1×h,(3)计算底的周长l=2πr,(4)计算表面积s=l×h+2×s1,(5)输出结果v和s。②根据IPO模式的分析结果,编写如下程序:#eg3_1.pyimportmath#输入数据r=3.5h=6.7#中间处理s1=math.pi*r*rv=s1*hl=2*math.pi*rs=l*h+2*s1#输出结果print("圆柱体的体积=%f,表面积=%f"%(v,s),sep=',')3.顺序结构程序“importmath”语句的功能是导入模块math,导入后才能使用π,使用格式为math.pi,即“模块名.属性名”顺序结构程序指程序的执行顺序是按书写顺序进行的。7开始与结束框:用来表示一个过程的开始或结束。”开始”或”结束”写在符号内。输入/输出框:用于数据的输入和输出。判定框:用来表示过程中的一项判定或一个分岔点,判定或分岔的条件写在菱形内,常以问题的形式出现。对该问题的回答决定了判定符号之外引出的路线,每条路线标上相应的回答。处理框:用来表示过程的一个单独步骤。具体内容写在框内。
流程线:用来表示步骤在顺序中的进展。流程线的箭头表示一个过程的流程方向。连接框:用来表示流程图的待续。圈内有一个字母或数字。在相互联系的流程图内,连接符号使用同样的字母或数字,以表示各个过程是如何连接的。4.算法算法:就是解决问题的方法或步骤,是程序设计的灵魂。算法的描述方法很多。常见的有自然语言法、伪代码法、控制流图法、NS控制流图法等,例3-1的“P(处理过程(算法))”中的算法就是用自然语言描述的。本节介绍常用的控制流图,其它描述方法请查阅相关资料。8例3-1控制流图开始A计算:l=2πrA输出体积和表面积结束计算表面积:s=l×h+2×s1输入数据:r=3.5,h=6.7
计算体积:v=s1×h计算:s1=πr24.1算法示例5.代码编写规范缩进:Python程序是通过代码的缩进来体现代码之间的逻辑关系,即层次结构。Python的代码块是从尾部带“:”的行开始,以及其后所有缩进的行,表示一个代码块。同一级别代码块的缩进量必须相同。k=0foriin[1,2,3,4,5]:k=k+i
print(k)print(i)ifa>b:ifa==1:print(a)else:print(a+1)else:print(b)属于for语句,所以向后缩进属于外层的if语句,所以向后缩进95.代码编写规范代码注释:注释是程序中不可缺少的部分,良好的注释可以使程序的可读性增强,同样也方便程序员后期的代码维护。Python代码的注释有两种形式:单行注释,以“#”开始,表示本行是注释行,也就是“#”之后的内容是注释信息;多行注释,用三个单引号“’’’”或者是三个双引号“"""”将注释的内容括起来。’’’这段程序的功能是:求1~100的和’’’sum=0forkinrange(101):sum=sum+kprint(sum)多行注释105.代码编写规范其它规范①一个语句行太长,可以在行尾用“\”来续行;②一般一个import语句只导入一个模块,尽量避免导入多个模块;③使用必要的空格和空行来增强代码的清晰度和可读性。一般在运算符的两侧、逗号两侧建议增加空格,代码块之间增加空行;④Python官网有关于代码风格的指南PEP8,见/dev/peps/pep-0008/。1112【例3-2】请设计一个定期存款计算器。要求输入存款金额、存款期限(整年)和存款利率,由计算器计算到期的本息总额。(1)根据IPO模式分析如下I(输入数据):三个输入数据,分别是存款金额、利率和年限。O(输出结果):本息总额。P(处理过程(算法)):根据公式,存款金额×(1+利率)年限,即可计算出本息总额。(2)算法设计(自然语言描述)A1:输入存款金额principal;A2:输入利率rate;A3:输入存款年限year;A4:计算final=principal×(1+rate)yearA5:输出计算结果,本息总额。6.应用案例13(3)编写程序#eg3_2.py#存款计算器importmath#输入存款金额、利率和年限principal=float(input('请输入存款金额:'))rate=float(input('请输入存款利率:'))year=int(input('请输入存款年限:'))#计算本息总额final=principal*math.pow(1+rate,year)#输出本息总额print("本息总额为%.2f"%final)6.应用案例14(4)调试程序程序调试后,输出结果及输入数据如下:请输入存款金额:1000请输入存款利率:0.025请输入存款年限:3本息总额为1076.89(4)调试程序程序调试后,输出结果及输入数据如下:请输入存款金额:1000请输入存款利率:0.05请输入存款年限:12本息总额为1795.86(4)调试程序程序调试后,输出结果及输入数据如下:请输入存款金额:1000请输入存款利率:0.08请输入存款年限:12本息总额为2518.17(4)调试程序程序调试后,输出结果及输入数据如下:请输入存款金额:1000请输入存款利率:0.06请输入存款年限:12本息总额为2012.20当年利率达到6%时,经过12年,本金将增加1倍。如果将利率理解为月息,那么经过12个月,本金将翻倍。什么情况下会按月息计算利息?校园贷?高利贷?非法贷?我们要自觉抵制校园贷,远离消费陷进,增强法制意识。带下划线的内容是用户输入的数据6.应用案例15print()是Python的内建(内置)函数。其功能是输出信息。常用格式如下:(1)输出实例对象或表达式列表的值:print(‘23+45=’,23+45)(2)格式化输出实例对象或表达式列表的值:print(“本息总额为%.2f”%final),”%”为格式控制符,格式符如下表所示。%m.nf格式中,n表示小数部分的位数,m表示输出的总宽度,当不够时,按实际输出,如print(‘%2.3f’%123.5678),实际输出结果为”123.568”(3)控制输出项分隔符及换行设置,通过参数”sep”和“end”的设置来实现。”sep”是设置输出项的分隔符,如”sep=‘,’”表示输出项之间用”,”进行分隔。”end”是用于设置结束符的,每个print()默认是进行换行,如果设置了”end=‘X’”,则不换行,以所设置的符号‘X’作为结束符。格式符含
义d,i带符号的十进制整数o不带符号的八进制u不带符号的十进制X/x不带符号的十六进制E/e科学计数法表示的浮点数f/F十进制浮点数G/g如果指数大于4或者小于精度值则和e相同,其它情况和F/f相同C单字符(接受整数或者单字符字符串)r字符串(使用repr转换任意python对象)s字符串(使用str转换任意python对象)7.print()函数16input()是Python内建(内置)函数。其功能是从控制台获取(输入)一个字符串。调用格式为input([提示字符串]),如input('请输入存款利率:'),执行时,屏幕上先显示提示字符串”请输入存款利率:”,再等待用户输入。可以用help()函数查看其功能和参数,即:help(print)、help(input)8.input()函数17input()输入的是一个字符串,可实际上利率、年限和存款金额都是整数或者是浮点数,因此需要利用类型转换符将字符串转换成需要的类型。转换格式为:”类型符(转换对象)”如:year=int(input('请输入存款年限:’))
将输入的年限转换为int类型,再赋值给year变量。9.类型转换18内置函数数量多,功能强大10.Python内建函数(一)函
数功
能
描
述abs(x)返回x的绝对值或复数的模input([“提示字符串”])从控制台获得输入字符串isinstance(object,class_or_tuple)测试object是否属于指定类型的实例,如果有多个类型,需要放入元组中list([x])、tuple([x])、dict([x])把x转换为列表、元组、字典,或生成空列表、元组、字典open(filename[,mode])以指定的模式mode打开文件filename,并返回文件对象print(value,……,sep=’’,end=’\n’,file=sys.stdout,flush=False)基本输出函数range([start,]end[,step])返回range对象,包含区间[start,end)内以step为步长的整数reversed(seq)将seq序列反转(逆序)str(object)将object转换为字符串sorted(iterable,key=None,reverse=False)对iterable进行排序,key指定排序的规则,reverse指定升序或降序排列zip(sqe1[,seq2[……]])返回以sqe1[,seq2[……]]序列对应元素形成的元组dir([obj])列出对象的所有属性和方法help([obj])函数或模块的详细说明id(obj)获取对象的内存地址type(obj)返回对象的类型filter(function,iterable)用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表hex(x)用于将一个整数转换成16进制,以字符串形式表示bin(x)用于将一个整数转换成二进制,以字符串形式表示oct(x)用于将一个整数转换成8进制,以字符串形式表示ord(char)将字符转换成对应的十进制ASCII码chr(x)将一个ASCII转换成对应的字符all(iterable)判断给定的可迭代参数iterable中的所有元素是否都为TRUE,如果是返回True,否则返回Falseany(iterable)any()函数用于判断给定的可迭代参数iterable是否全部为False,则返回False,如果有一个为True,则返回Truelen(obj)返回容器中的项目数,如字符串的长度,列表中元素的个数等19
开始输入数据:a,b,c
计算:s=(a+b+c)/2输出面积结束
11.精选示例20(3)编写程序#eg3_3.py#计算三角形的面积importmath#输入三条边a=float(input("请输入三角形的第一条边:"))b=float(input("请输入三角形的第二条边:"))c=float(input("请输入三角形的第三条边:"))#计算面积s=(a+b+c)/2area=math.sqrt(s*(s-a)*(s-b)*(s-c))#输出结果print("三角形的面积是:%f"%area)11.精选示例函数的调用格式:模块名.函数名(4)调试程序请输入三角形的第一条边:3请输入三角形的第二条边:4请输入三角形的第三条边:5三角形的面积是:6.000000调试程序,输入三角形的三条边时,要保证能构成三角形。如果不能构成三角形,可否有输出结果?为什么?分支(选择)结构程序设计0222有时候进行程序设计时,需要根据条件编写不同的处理程序,实现用户的需求,如银行自动柜员机,当正确输入密码后,会出现多个选项,当用户选择某个选项后,自动进入相应的功能界面。这类程序就是分支(选择)结构程序。根据什么进行选择向左还是向右?分支结构程序去哪儿?表达式就是用运算符将运算量连接起来的式子。23算术表达式>>>3+5**8390628>>>type(3+5**8)<class'int'>关系表达式>>>a=6>>>b=8>>>a>b,a<=b(False,True)>>>type(a>b)<class'bool'>>>>1<3>8#等价于1<3and3>8False逻辑表达式>>>aandb8>>>type(aandb)<class'int'>>>>type(aandb)<class'int’>成员测试表达式>>>x=[1,2,4]>>>y=7>>>z=2>>>yinxFalse>>>zinxTrue1.表达式24同一性测试表达式>>>x=[1,2,3]>>>y=(1,2,3)>>>z=[4,'eyru']>>>k=y>>>xisyFalse>>>zisxFalse>>>kisyTrue#同一性测试是检查两个变量是否指向同一个实例#可以用id(对象)函数查看某个对象的内存地址>>>id(x)52006856>>>id(y)52072592>>>id(z)52138568>>>id(k)52072592复杂表达式判断一个年份是否是闰年的表达式为:year%4==0andyear%100!=0oryear%400==0判断大于50岁的女性表达式为:年龄>50and性别==’女’y和k地址相同,即指向同一实体对象,所以kisy为True1.表达式if语句格式if表达式:
语句块if语句的执行当表达式的值为True或者其它等价值时,表示条件满足,则语句块将被执行,否则该语句块不被执行。应用示例
【例3-4】求x的绝对值。252.单分支结构程序#eg3_4.pyx=float(input(“pleaseinputanumber:”))ifx<0:x=-xprint(x)表达式为真?语句块YN…………开始输出x结束x<0?x=-xYNx
=
7826if……else……语句格式if表达式: 语句块Aelse:
语句块Bif……else……语句的执行当表达式的值为True或者其它等价值(非空)时,执行语句块A,否则执行语句块B。也即任何一次执行,只会选择其中一个语句块执行,或者称之为选择其中一个分支执行。……表达式语句块A语句块B非空/True空/0/False……任何一次执行只会选择其中一个分支执行3.双分支结构程序27【例3-5】请编程输入学生分数,并且根据分数判断其是否通过考试。要求:如果成绩大于等于60,则输出”passed”,否则输出”failed”。(1)根据IPO模式分析如下I(输入数据):一个输入数据,学生的分数。O(输出结果):”passed”/”failed”字符串。P(处理过程(算法)):分数大于等于60,即为passed,否则为failed。(2)算法设计(流程图)开始输出:passed输出:failed结束score>=60?YN输入分数score3.双分支结构程序28(3)编写程序#eg3_5.py#学生分数通过与否判断程序score=float(input(“请输入分数:”))ifscore>=60:print(“passed”)else:print(“failed”)3.双分支结构程序(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:85输出结果为:passed(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:54输出结果为:failed(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:-25输出结果为:failed(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:59.999输出结果为:failed(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:59.999999999输出结果为:passed(4)调试程序程序调试后,输出结果及输入数据如下:请输入成绩:124输出结果为:passed通常的成绩是在0~100之间,但是不在这个范围内,程序也有输出结果。说明程序不严谨。当输入59.999999999时,输出passed。为什么会出现这样的结果?程序调试,需要把各种情况都要进行调试,养成严谨认真的工作态度。29多分支if语句格式if表达式A:
语句块Aelif表达式B:
语句块Belif表达式C:
语句块C ……[else:
语句块N]多分支if语句的执行
首先计算表达式A,如果其值为True或者其它等价值时(非空),则执行语句块A;否则计算表达式B,如果其值为True或者其它等价值时(非空),则执行语句块B;否则计算表达式C,如果其值为True或者其它等价值时(非空),则执行语句块C;依次类推,如果所有表达式计算的结果都为False(空值/0),则执行else后的语句块N。注:如果省略else字句,则表达式都False时,什么语句也不执行。4.多分支结构程序……表达式A语句块A语句块BFalseTrue表达式B表达式CFalseFalse语句块C…………
语句块NFalseTrueTrue……True30【例3-6】请编程实现100分制成绩转换为A、B、C、D、E五级等级制成绩。100分制与五级等级制的对应关系为:90分及以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。①根据IPO模式分析如下I(输入数据):一个输入数据,学生的成绩。O(输出结果):A、B、C、D、E中的一个。P(处理过程(算法)):90分及以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。4.多分支结构程序31②算法设计(控制流图)4.多分支结构程序FalseTrueFalseFalseFalseTrueTrueTruescore>=90?grade=’A’grade=’B’score>=80?
score>=70?
grade=’C’score>=60?
grade=’E’grade=’D’输入成绩score开始输出等级grade结束32③编写程序#eg3_6.py#100分制与五级等级制成绩的转换score=float(input("请输入成绩:"))ifscore>=90:grade='A'elifscore>=80:grade='B'elifscore>=70:grade='C'elifscore>=60:grade='D'else:grade='E'
print("等级为:",grade)4.多分支结构程序(4)调试程序分别输入93,84,78,64,42,记录输出结果输入-45,记录结果输入108,记录结果输入79.999999999,记录结果为什么-45和108也会有结果输出?如何修改程序,确保输入的数据在0~100之间?输入79.999999999,结果为“B”等,错误的原因是什么?分支结构程序调试要注意什么问题?作一个程序设计人员,你所理解的工匠精神,应该包含哪些方面?33【例3-7】全国某等级考试的等级是这样规定的,如果分数是90及其以上的,则为优秀,如果是大于等于60,小于90,则为合格,小于60,则为不合格。请编程,根据输入的分数,确定考试的最后等级。(1)根据IPO模式分析如下I(输入数据):一个输入数据,学生考试的分数。O(输出结果):优秀、合格、不合格其中之一。P(处理过程(算法)):90分及以上为优秀,60~89分为合格,60分以下为不合格。5.精选案例34score>=90?grade=’优秀’grade=’合格’FalseTruescore>=60?
Falsegrade=’不合格’True输入分数score输出等级结束开始5.精选案例(2)算法设计(流程图)35(3)编写程序#eg3_7.py#某等级考试成绩判定score=float(input(“请输入考试分数:"))ifscore>=90:grade="优秀"elifscore>=60:grade="合格"else:grade="不合格"
print("等级为:",grade)(4)调试程序请自行给出调试数据,并记录结果。5.精选案例score>=60?grade=’不合格’grade=’优秀’FalseTruescore>=90?
Falsegrade=’合格’True开始输入分数score输出等级结束例3-7,如果改成以下的算法流程图,请写出程序。请自行编写程序并调试,并与前面的程序比较运行的结果是否一致?为什么?5.精选案例37
③编写程序#eg3_fu_1.py#计算分段函数x=float(input("请输入x:"))#计算yifx>=1:y=x-1else:y=-x+1#输出计算结果print("y=%f"%y)调试程序请根据公式,确定输入数据,记录输出结果,并分析输出结果是否与预期值相同?开始结束x>=1?YNy=-x+1y=x-1输出y输入x5.精选案例38【例3-附2】请编写一个个人所得税计算器。如职工全年各项(工资薪金、劳务报酬、稿酬、特许权使用费)累计收入15万元,减除费用、专项扣除、专项附加扣除等合计4.5万,应纳税所得额=15万-4.5万-6万=4.5万。工资薪金所得累计应纳税所得额=累计收入-免税收入-减除费用-专项扣除-专项附加扣除-依法确定的其他扣除累计收入=工资薪金、劳务报酬、稿酬、特许权使用费免税收入=6万元减除费用、专项扣除、专项附加扣除、依法确定的其他扣除和符合条件的公益慈善事业捐赠,根据资料进行登记。级数应纳税所得额税率速算扣除1不超过36000元3%02超过36000元至144000元的部分10%25203超过14400元至300000元的部分20%169204超过300000元至420000元的部分25%319205超过420000元至660000元的部分30%529206超过660000元至960000元的部分35%859207超过960000元的部分45%1819202011年是月免除3500后起征,2020年改为全年免税收入为6万,月均5000。增加了专项附加扣除,如子女教育扣除、赡养老人扣除等。随着国家的飞速发展,国民收入快速增加,国家适时调整个税征收办法,体现了我国的国力强盛和社会主义制度的优越性。5.精选案例39(1)根据IPO模式分析如下I(输入数据):一个输入数据,应纳税所得额xO(输出结果):一个输出结果,应缴纳的个人所得税yP(处理过程(算法)):见流程图(2)算法设计(控制流图)FalseTrueFalseFalseFalseTrueTrueTruex>960000?z=0.45,k=181920Z=0.35,k=85920x>660000?
x>420000?
Z=0.3,k=52920x>300000?
z=0.25,k=31920输入应纳税所得额x开始输出应纳税金结束x>144000?
z=0.2,k=16920x>36000?
Falsez=0.1,k=2520Falsez=0.03,k=0TrueTruey=x*z-k5.精选案例(4)调试程序个人所得税计算器请输入应纳税所得额(单位:元):45000应纳税所得额=45000.00元,应交税金=1980.00元个人所得税计算器请输入应纳税所得额(单位:元):180000应纳税所得额=180000.00元,应交税金=19080.00元……(3)编写程序#eg3_fu_2.py#个人所得税计算器print("个人所得税计算器")x=float(input("请输入应纳税所得额(单位:元):"))ifx>960000:z=0.45k=181920elifx>660000:z=0.35k=85920elifx>420000:z=0.3k=52920elifx>300000:z=0.35k=31920elifx>144000:z=0.2k=16920elifx>36000:z=0.1k=2520else:z=0.02k=0y=x*z-kprint("应纳税所得额=%.2f元,应交税金=%.2f元"%(x,y),sep=",")分支结构程序的调试,保证每个分支至少执行一次,因此需要给出?个分支的调试数据,并进行调试。同学们可以比较一下如果按2011年的个税缴纳标准,2020年的标准至少少交多少税?5.精选案例循环结构程序设计0342日常生活中,很多现象事件是重复出现的,如时钟、地球自转、每周的课表等,这些现象和事件是在不断重复,那么程序设计如何处理这些现象和事件呢?程序设计中通过编写循环结构程序来解决这类问题。如求1+2+3+……+100的和,或者是求1×2×3×……×n=n!,需要重复进行加法、乘法操作。同比如时钟程序,需要重复进行加法和判断等操作。Python中实现循环结构的语句有while和for两种语句。循环结构程序43while语句的格式while表达式:
语句块while语句的执行(1)计算表达式的值;(2)如果表达式的值为True(非空值/0),则执行语句块,执行完后,转(1);如果表达式的值为False(空/0),则结束while语句,执行其后的语句。语句块while后的语句……表达式FalseTrue1.
While语句44【例3-9】编程求1+2+……+100。①根据IPO模式分析如下I(输入数据):本题可以把求和的终止值100作为输入,因此是一个输入数据。O(输出结果):1个,即所求的和。P(处理过程(算法)):重复进行求和及加1的计算。②算法设计(控制流图)开始输入求和的终止值end初始化循环变量rep=1rep<=end?初始化和值sum=0sum=sum+reprep=rep+1输出和值sum结束FalseTrue1.
While语句45③编写程序#eg3_9.py#求1+2+……+100的和#输入终止值end=int(input("请输入求和的终止值:"))#初始化rep=1sum=0#求和,循环计算whilerep<=end:sum=sum+reprep=rep+1#输出结果print("1+2+……+%d=%d"%(end,sum))调试程序请输入求和的终止值:1001+2+……+100=5050请再输入其它的终止值,调试程序,记录结果。程序设计人员应具备认真仔细的工匠精神。全面调试程序各种可能的情况。1.
While语句
循环结构程序,主要由三部分组成:循环条件即while后的表达式;重复执行的部分,通常称为循环体,本例中的sum=sum+rep和rep=rep+1语句;循环的初始化,本例中的rep=1和sum=0语句。
循环结构程序需要注意的是,循环的条件通常情况下要能使循环最后结束,否则进入死循环,一般是不期望的。当然,死循环日常生活中是有需要的,比如地球的自转,时间的计算,就需要永远地进行着,而不能终止。比如:while1: ……
是一个死循环。2.循环结构程序小结死循环有意义吗?什么情况下需要死循环?日常生活中的死循环还有哪些?事物都是有两面性的,有个成语:一分为二。即事物作为矛盾的统一体,包含相互矛盾的两个方面。47for语句格式for<取值>in<序列或迭代对象>:
语句块A[else:
语句块B]
for语句的执行(1)从序列或迭代对象中依次取一个值;(2)执行语句块A;(3)不断重复(1)和(2),直到序列或迭代对象全部取完,然后,如果有else部分,则执行else语句块B,执行完后,结束for语句,执行for之后的语句;如果没有else部分,则结束for语句,执行其后的语句。注:while语句也可以有else部分,其执行同for,当循环到while表达式的值为False(空/0)时,才执行else部分。如果是break结束的循环,则不执行else部分,for语句也是一样的。3.for语句48【例3-10】根据下列程序的执行结果,理解for语句的执行过程。#eg3_10.pyword='hello'forstrinword:print(str)else:print(“WarmlyWelcome!”)输出结果如下:helloWarmlyWelcome!3.for语句49#eg3_11.py#用for语句实现的1+2+……+100的程序end=int(input("请输入计算的终止值:"))sum=0forrepinrange(end+1):sum=sum+repprint("1+2+……+%d=%d"%(end,sum))【例3-11】用for语句编程求1+2+……+100。调试程序请比照例3-9的输入数据,记录结果,并比较两个程序的执行结果,以及两个程序各自实现方法。3.for语句50①range()是Python的内建函数②函数原型:range([start,]stop,[step])③功能:从start值开始,以step为步长,直到stop为止,依次产生序列即[start,start+step,start+2*sep,……start+(stop-start-step)//step*step]④示例>>>foriinrange(1,5,1): print(i,end='') 1234>>>foriinrange(5,0,-1): print(i,end='')54321当start省略时,表示为0,step省略时,表示为1,如下:>>>foriinrange(5): print(i,end='')01234注意:序列不包含stop如果start=0,stop=9,setp=2,则start不能省略,否则变为range(9,2),程序将没有输出结果。即foriinrange(9,2): print(i,end=‘‘)#没有输出结果4.range()函数51【例3-12】观察下列程序的输出结果,理解列表元素的循环访问方法。#eg3_12.pyList=['python','java','c','c#','delphi']forwordinlist:print(word)print('*******')foriinrange(len(list)):print(list[i])输出结果为:pythonjavacc#delphi*******pythonjavacc#delphi5.列表的访问列表可以通过元素的索引访问,也可以直接遍历每个元素元组、字符串等有序序列是不是也可以采用列表类似的访问方法?52【例3-13】观察下列程序的输出结果,理解字典元素的循环访问方法。#eg3_13.py#字典的访问dict={1:'python',2:'java',3:'c',4:'c#',5:'delphi'}forsindict:print(s,’:’,dict[s])输出结果为:1:python2:java3:c4:c#5:delphi6.字典的访问53dict={1:'python',2:'java',3:'c',4:'c#',5:'delphi'}print('**键**')forsindict.keys():print(s,dict[s])print('**值**')forvaluesindict.values():print(values)print('**键、值对**')fors,valindict.items():print(s,val)字典的多种访问方式请自行写出输出结果6.字典的访问54break语句没有语句体,其功能是结束当前循环程序的执行。forletterin‘hello’:ifletter==’l’:
breakprint(letter)print(“end”)其输出结果为:heend7.break语句55continue语句也是没有语句体,其功能是结束当次循环的执行,即跳过当次循环语句块中剩余的语句,继续进行下一轮的循环。k=4whilek>0:k=k-1ifk==2:
continueprint(k)print(“end”)输出结果为:310End8.continue语句forletterin‘hello’:ifletter==’l’:
continueprint(letter)print(“end”)其输出结果为:hEoend56【例3-14】请给英语老师编一个程序,求某次考试后的平均分、最高分、最低分。(1)根据IPO模式分析如下I(输入数据):全班同学某次考试的成绩,人数不定,用列表存储成绩。O(输出结果):三个,平均分,最高分,最低分。P(处理过程(算法)):见(2)。(2)算法设计(自然语言)A1.输入全班考试成绩,以”-1”作为输入结束标志(通常成绩不会是负数);A2.求总分及总人数;A3.求平均分;A4.求最高分和最低分;A5.输出结果。9.精选案例57(3)编写程序#eg3_14.py#计算某次考试成绩的平均分、最高分、最低分#输入成绩,以-1结束,成绩存在列表中score=[]whileTrue:g=float(input("请输入成绩(0~100),以-1作为结束标志:"))ifg==-1:breakelse:score.append(g)#计算平均分sum=sum(score)num=len(score)average=sum/num#计算最高分和最低分max=max(score)min=min(score)#输出结果print("平均分为:%.2f"%(average))print("最高分为:%.2f"%(max))print("最低分为:%.2f"%(min))(4)调试程序请自行完成程序调试,注意结束标志“-1”。如何确保输入的成绩在0~100之间。9.精选案例【例3-15】请编程判断一个非负整数是否为素数。①根据IPO模式分析如下I(输入数据):一个整数。O(输出结果):是或者不是。P(处理过程(算法)):见②。②算法设计(控制流图)开始输入一个整数ni=2i<n?n%i==0?i=i+1输出YES,n是素数结束输出NO,n不是素数FalseTrueFalseTrue③编写程序#eg3_15.py#判断一个整数是不是素数n=int(input("请输入一个非负整数:"))forkinrange(2,n):ifn%k==0:print("%d不是素数"%(n))breakelse:print("%d是素数"%(n))调试程序请自行完成程序调试。需要输入几组数据来测试程序?如何提高程序的执行效率?9.精选案例59【例3-16】请编程对全班同学的拼音姓名或者英文姓名进行排序。分析:本题只需要依次输入姓名的拼音或者是英文姓名,然后使用列表排序方法即可实现排序。#eg3_16.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海工商职业技术学院《安全评估分析》2025-2026学年第一学期期末试卷(B卷)
- 上海工商职业技术学院《安全工程专业导论》2025-2026学年第一学期期末试卷(B卷)
- 上海工商职业技术学院《Access 数据库技术》2025-2026学年第一学期期末试卷(B卷)
- 老年人护理质量与安全管理
- 上饶卫生健康职业学院《安全生产技术》2025-2026学年第一学期期末试卷(B卷)
- 上饶卫生健康职业学院《Android 程序开发》2025-2026学年第一学期期末试卷(B卷)
- 上海音乐学院《安全系统工程》2025-2026学年第一学期期末试卷(B卷)
- 上海音乐学院《安全与伦理》2025-2026学年第一学期期末试卷(A卷)
- 2025年动力电池回收材料再生成本控制与优化
- 上海震旦职业学院《安全生产法律法规》2025-2026学年第一学期期末试卷(A卷)
- 校车驾驶员培训课件
- 2025年国企党建工作岗笔试题目及答案
- 2026安徽合肥市肥东县招考村级后备干部16人笔试模拟试题及答案解析
- 抽象表现主义课件
- 肉毒毒素临床应用
- 保险消费者权益保护培训
- 工业视觉检测CCD技术培训
- 室外pe管施工方案
- 新建船舶交接协议书
- 抖音规则与机制课件
- 句容公寓买卖合同
评论
0/150
提交评论