Python程序设计与人工智能基础 课件 第3章 流程控制_第1页
Python程序设计与人工智能基础 课件 第3章 流程控制_第2页
Python程序设计与人工智能基础 课件 第3章 流程控制_第3页
Python程序设计与人工智能基础 课件 第3章 流程控制_第4页
Python程序设计与人工智能基础 课件 第3章 流程控制_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

第3章流程控制任何复杂的算法,都可以由顺序结构、分支结构和循环结构这3种基本结构组成,在构造一个算法时,以这3种基本结构作为"建筑单元",并遵守相应规范,结构清晰、易于正确性验证、易于纠错。学习目标掌握程序流程图的画法,能够使用程序流程图表示简单程序了解顺序、分支与循环结构的表示方法,能够选择合适的结构表示程序掌握for循环与while循环的原理,能够正确使用循环结构掌握break语句与continue语句,能够灵活跳出循环结构本章主要内容程序表示方法分支结构循环结构实验与人工智能入门应用3.1程序表示方法在程序设计中,最重要的不是编写代码,而是设计。就像建筑、机械等行业的要画设计图、施工图,程序设计的思路也有必要用图的形式画出来。绘图的过程就是思考的过程,由于其直观性,绘图的过程本身又促进了思考。本节从程序流程图、程序基本结构及其他程序表示方法进行讲解。3.1.1程序流程图设计程序时,人们常用一些无法直接编程,但能体现程序特性的方法来描述程序的功能与流程。描述程序结构的方法有自然语言、流程图、伪代码法及N-S图等,其中以流程图法最为形象直观。程序流程图又称程序框图、流程图,是一种用图形、流程线和文字说明描述程序基本操作和控制流程的方法,它是程序分析和过程描述的最基本方式,本质是对解决问题的方法、思路或算法的一种描述。流程图的基本元素有7种,包括起止框、判断框、处理框、输入/输出框、流向线、连接点等。程序流程图的优点主要如下:•采用简单规范的符号,画法简单。•结构清晰,逻辑性强。•便于描述,容易理解。3.1.2程序基本结构和其他编程语言一样,按照执行流程划分,Python程序也可分为3大结构,即顺序结构、选择(分支)结构和循环结构,它们都是通过控制语句实现的。其中,顺序结构不需要特殊的语句,选择结构需要通过条件语句实现,循环结构需要循环语句实现。顺序结构最简单、最基本的程序控制结构,各操作按照出现的先后顺序执行。选择(分支)结构通过条件语句实现,控制程序根据不同情况做出不同处理。循环结构通过循环语句实现,在程序中需要反复执行某个功能时使用。顺序结构顺序结构是三种结构中最简单、最基本的程序控制结构。将解决问题的各个步骤按顺序写成程序代码,程序中的各操作是按照它们出现的先后顺序来执行的。顺序结构流程图如图3-1所示。顺序结构的特点:每一步操作严格按照书写顺序依次执行,没有跳转或重复,是最直观的程序结构。图3-1顺序结构流程图分支结构分支结构别名选择结构。利用分支结构,可以控制程序根据不同的情况做出不同的处理。分支结构流程图如图3-2所示。分支结构的核心是条件判断,根据条件的真假选择不同的执行路径,使程序具备"决策"能力。图3-2分支结构流程图循环结构循环结构指的是在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环,循环结构流程图如图3-3所示。3种基本程序结构的共同特点:每一种结构都只有一个入口和一个出口。图3-3循环结构流程图3.1.3其他算法表示方法——自然语言自然语言(NaturalLanguage)是人类交流和思考的主要工具,通常指的是一种自然地随文化演化的语言(如英语、汉语等)。编程语言指的是计算机程序设计语言,如C、Java、Python等。自然语言一般用于描述一些简单的问题、步骤,可以使算法通俗、简单易懂,其缺点是不能让计算机执行。自然语言用人类日常语言描述算法步骤,通俗易懂,但无法被计算机直接执行。编程语言如C、Java、Python等,可被计算机直接执行,但需要严格遵守语法规则。伪代码法伪代码是使用介于自然语言和计算机语言之间的文字和符号来描述的算法,采用程序设计语言的基本语法,可以结合自然语言来设计,而且不用符号,书写方便,没有固定的语法和格式,具有很大的随意性,便于向程序过渡。使用伪代码描述算法的示例,具体如下。开始c=a%b;循环直到c=0a=b;b=c;c=a%b;输出b;结束上述代码中,描述的是计算两个数的除法,输出余数。拓展阅读:N-S图任何算法都是由顺序结构、分支结构和循环结构组成的,N-S流程图就是将各基本结构之间的流程线去掉,将全部的算法写在一个矩形框内。因此,N-S流程图也是算法的一种结构化描述方法,同样也有3种基本结构,分别是顺序结构、分支结构与循环结构。例如,输入一个数,判断该数是否是偶数,并给出相应提示,此程序的选择结构的N-S流程图,如图3-4所示。图3-4判断偶数的N-S流程图3.2分支结构条件语句可以给定一个判断条件,并在程序执行过程中判断该条件是否成立。程序根据判断结果执行不同的操作,这样就改变代码的执行顺序,从而实现更多功能。本节从单分支、双分支、多分支、分支结构嵌套及模式匹配等几方面进行讲解。3.2.1单分支结构——语法if语句用于在程序中有条件地执行某些语句,其语法格式具体如下。if条件表达式:语句块其中条件表达式可以是单独的布尔值、变量,也可以是比较表达式(如a>b)或逻辑表达式(如a>borc>b)。如果条件的值为True,则执行其后的语句块;如果条件的值为False,就跳过该语句块,继续执行后面的语句。条件为True执行if后面的语句块,然后继续执行后续代码。条件为False跳过if后面的语句块,直接继续执行后面的语句。单分支结构——示例下面通过一个示例演示if语句的使用,假设一个人的分数大于60分,则输出"真棒!",并输出分数,否则输出分数。接下来在创建好的"Python程序设计基础"项目中创建Chapter03文件夹,在Chapter03文件夹中创建一个名为if-score.py的文件,具体代码如文件3-1所示。文件3-1if-score.pyscore=88ifscore>=60:print("真棒!")print("您的分数为%d"%score)在上述代码中,第2行代码判断score的值是否大于等于60,如果score的值大于等于60,执行第3~4行代码,否则执行第4行代码。图3-5文件if-score.py的运行结果由图3-5可知,执行的是文件if-score.py的第3~4行代码,即判断score的值大于等于60。图3-6修改变量值后文件if-score.py的运行结果由图3-6可知,修改变量后,运行结果为"您的分数为59",即判断score的值小于60。3.2.2双分支结构——语法在使用if语句时,只能做到满足条件时执行其后的语句块。如果需要在不满足条件时,执行其他语句块,则可以使用if-else语句。if-else语句用于根据条件表达式的值决定执行哪块代码,其语法格式如下。if条件表达式:语句块1#当条件表达式为True时,执行语句块1else:语句块2#当条件表达式为False时,执行语句块2如果条件表达式的值为True,则执行其后的语句块1,否则执行语句块2。身体质量指数(BodyMassIndex,BMI)是国际上衡量人体胖瘦程度的重要指标。计算BMI需要人体体重和身高两个数值。学校在进行体质测试时,只关心学生的BMI是否在正常范围,只有是与否两个可能性,可以用if...else语句实现的双分支结构解决。双分支结构——BMI判断示例在Chapter03文件夹中创建一个名为judge-BMI.py的文件,在该文件中计算BMI值,判断是否在正常范围,具体代码如文件3-2所示。文件3-2judge-BMI.pyweight=float(input("请输入您的体重(kg):"))height=float(input("请输入您的身高(m):"))bmi=weight/pow(height,2)print(f"BMI:{bmi:.2f}")if18.5<=bmi<24:level="正常"else:level="已偏离正常值,正常范围为[18.5,24)"print("身体状况为:",level)图3-7文件judge-BMI.py的运行结果由图3-7可知,输入的体重和身高分别是60、1.74,经过BMI公式的计算,BMI=19.82,属于[18.5,24)区间,输出"身体状况为:正常"。BMI公式:正常范围:18.5≤BMI<24双分支结构——条件表达式形式if...else语句也可以写成条件表达式的形式,其语法格式具体如下。表达式1if条件else表达式2在语法格式中,表达式可以是数字类型或字符串类型的一个值,也可以是变量。文件judge-BMI.py的第5~8行代码可以改写为条件表达式的形式,具体代码如下。level="正常"if18.5<=bmi<24else"已偏离正常值,正常范围为[18.5,24)"标准if-else写法if18.5<=bmi<24:level="正常"else:level="已偏离正常值"条件表达式写法(更简洁)level="正常"if18.5<=bmi<24\else"已偏离正常值"3.2.3多分支结构——语法生活中经常需要进行多重判断,例如,考试成绩在90~100区间内,称为学神;在80~90区间内,称为学霸;在60~80区间内,称为学民;低于60的称为学渣。Python程序中的if...elif...else语句可以描述多分支结构,其语法格式如下。if条件1:语句块1elif条件2:语句块2…else:语句块N当执行该语句时,程序依次判断条件的值;若某个条件为True,则执行对应的语句块,结束后跳出if...elif...else语句,继续执行其后的代码;如果没有任何条件成立,则执行else下的语句块,else语句是可选的。if...elif...else语句执行流程如图3-8所示。程序依次判断每个条件,一旦某个条件为True,执行对应语句块后即跳出整个结构,不再判断后续条件。图3-8if...elif...else语句执行流程多分支结构——BMI多区间判断示例下面通过一个示例演示多分支结构的使用,计算BMI,判断是否在正常范围。使用if...elif...else语句计算BMI的流程图如图3-9所示。图3-9使用if...elif...else语句计算BMI文件3-3judge-BMI-1.pyweight=float(input("请输入您的体重(kg):"))height=float(input("请输入您的身高(m):"))bmi=weight/pow(height,2)print(f"BMI:{bmi:.2f}")ifbmi<18.5:level="偏瘦,体重太轻了,要增加营养哦"elif18.5<=bmi<24:level="正常,您的身体非常健康,太棒啦"elif24<=bmi<28:level="偏胖,规律作息、合理饮食,会变得健康哦"else:level="肥胖,保持健康的身体是爱护自己的表现,要运动起来呀"print("身体状况为:",level)图3-10文件judge-BMI-1.py的运行结果由图3-10可知,输入的体重和身高分别是60、1.7,经过BMI公式的计算,BMI=20.76,属于[18.5,24)区间,输出"身体状况为:正常"。3.2.4分支结构嵌套——语法if语句嵌套即if、if-else和if-elif-else等3种条件语句间可以相互嵌套,语法结构如下。if表达式1:语句if表达式2:语句elif表达式3:语句else:语句elif表达式4:语句else:语句使用嵌套分支结构时,需要严格注意Python的缩进规则。每一层嵌套都需要增加一级缩进(通常为4个空格),否则程序会报错或产生逻辑错误。分支结构嵌套——降序输出3个整数示例下面使用if语句的嵌套结构解决实际问题。从键盘输入任意的3个整数,并将之降序输出。降序输出任意输入的3个整数的流程图如图3-11所示。图3-11降序输出任意输入的3个整数文件3-4descending.pya=int(input())b=int(input())c=int(input())ifa>b:ifa>c:ifb>c:print(a,b,c)else:print(a,c,b)else:print(c,a,b)else:ifa>c:print(b,a,c)elifb>c:print(b,c,a)else:print(c,b,a)图3-12降序输出3个数在上述代码中,第4~18行代码是if结构的嵌套,实现变量值从大到小进行排序。由图3-12可知,键盘输入的3个整数分别是12、18、20,降序后输出"201812"。3.2.5模式匹配match-case——语法在其他语言(如C语言)中有一种多分支条件判断语句,可以进行模式匹配,在Python3.10中也引入了这样的新特性。match后的对象会依次与case后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,"_"可以匹配一切,语法格式如下。matchvariable:#这里的variable是需要判断的内容case["quit"]:语句块1#当variable="quit"时执行statement_block_1case["go",direction]:语句块2case["drop",*objects]:语句块3...#其他的case语句case_:#如果上面的case语句没有命中,则执行这个代码块,类似于Switch的defaultdefault语句块match-case是Python3.10引入的新特性,类似于其他语言中的switch-case语句,但功能更强大,支持结构化模式匹配。"_"作为通配符,可以匹配任何未被前面case捕获的情况。模式匹配match-case——示例需求下面通过一个示例讲解使用match-case语句的分支结构解决实际问题。输入1输出"HelloWorld!"输入2输出"HelloPython!"输入3在一行内输出1-5,用空格分隔输入4在一行内输出1-5,用逗号分隔输入5分5行输出1-5,每行一个数字输入6在同一行内输出1-5,每个数字后跟分号";"输入其他字符输出"结束程序"模式匹配match-case——代码实现在Chapter03文件夹中创建一个名为match.py的文件,运用分支结构输出指定内容,具体代码如文件3-5所示。n=int(input("请输入:"))matchn:#这里的n是需要判断的字符case1:print("HelloWorld!")case2:print("HelloPython!")case3:print(1,2,3,4,5,sep='',end='')case4:print(1,2,3,4,5,sep=',',end='')case5:print(1,2,3,4,5,end='\n')case6:print(1,2,3,4,5,sep=';',end='')case_:print("结束程序")图3-13文件match.py的运行结果由图3-13可知,键盘输入的是3,在一行内打印输出1~5,并用空格分隔。在文件match.py中,如果不在case语句中使用"_",可能会出现不存在匹配的情况。模式匹配match-case——与if...elif...else的对比实现使用match-case语句表示多分支结构,还可以使用if...elif...else语句表示。在Chapter03文件夹中创建一个名为if-match.py的文件,运用分支结构输出指定内容,具体代码如文件3-6所示。n=int(input("请输入:"))ifn==1:print("HelloWorld!")elifn==2:print("HelloPython!")elifn==3:print(1,2,3,4,5,sep='',end='')elifn==4:print(1,2,3,4,5,sep=',',end='')elifn==5:print(1,2,3,4,5,end='\n')elifn==6:print(1,2,3,4,5,sep=';',end='')else:print("结束程序")图3-14文件if-match.py的运行结果由图3-14可知,键盘输入的是3,在一行内打印输出1~5,并用空格分隔。match-case与if...elif...else在功能上等价,但match-case语法更简洁,可读性更强,尤其适合多分支的情况。实验:包裹邮寄费用计算——实验目的与要求【实验目的】•掌握分支结构的使用•掌握逻辑运算符的使用•掌握input()输入函数的使用•掌握使用程序表示简单方程的方法•掌握数据类型转换的方式【实验要求与内容】邮寄包裹时,不同重量的包裹的计费方式也会不同,可以编写一个程序计算不同重量的包裹需要的费用。表3-1费用与重量的关系重量(kg)费用(元)≤0包裹重量输入有误,请重新输入≤112(1,3]12+(重量-1)×10(3,5]22+(重量-3)×8(5,10]38+(重量-5)×5(10,20]63+(重量-10)×3>20包裹超过最大重量限制,无法邮寄实验:包裹邮寄费用计算——流程图与解题思路图3-15计算不同重量包裹的程序流程图由图3-15可知,程序流程图从开始到结束,只有一个入口和出口,使用了两层分支结构对条件进行判断,可以使用分支嵌套结构进行程序设计。根据不同重量的包裹的费用计算方式计算费用,可以用嵌套分支语句实现,具体的解题思路如下。通过input()函数输入包裹的重量,并转换为浮点类型将重量范围作为条件,用if...else语句判断排除不符合条件的数据使用if...elif...else语句判断输入的重量的范围及计算最终需要的费用打印最终需要的费用实验:包裹邮寄费用计算——输入重量【实验步骤】实现在控制台输入包裹重量在Chapter03文件夹中创建一个parcelW.py文件,在该文件中使用input()函数实现在控制台输入包裹的重量,具体代码如文件3-7所示。文件3-7parcelW.pyweight=float(input("请输入包裹的重量(单位kg):"))使用float()函数将input()接收到的字符串转换为浮点数,这样可以支持小数重量的输入,例如1.5kg、2.3kg等。实验:包裹邮寄费用计算——限定重量范围限定能够计算的包裹重量范围在parcelW.py文件中,使用if...else结构实现计算包裹的重量范围,具体代码如下所示。ifweight<=0orweight>20:print("包裹重量输入有误,请重新输入")else:pass#分级计算不同重量包裹需要的金额在上述代码中,"weight<=0orweight>20"为逻辑或,即当重量小于0或者大于20时,则返回真;pass语句为占位语句,在程序中不进行任何操作(将在3.4.6节详解)。逻辑或(or)当weight≤0或weight>20时,条件为真,输出错误提示。pass占位语句pass语句不执行任何操作,用于占位,后续将替换为实际的计算逻辑。实验:包裹邮寄费用计算——阶梯计算与实验结果阶梯计算邮寄包裹需要的金额ifweight<=1:fee=12elifweight<=3:fee=12+(weight-1)*10elifweight<=5:fee=22+(weight-3)*8elifweight<=10:fee=38+(weight-5)*5else:fee=63+(weight-10)*3print("包裹邮寄费用为:",fee,"元")使用if...elif...else实现多分支结构,将之嵌套进if...else结构中,实现了分支结构的嵌套。图3-16计算不同重量的包裹由图3-16可知,当输入的邮寄包裹的重量为15kg时,包裹邮寄费用为78元。【实验小结】本实验对多分支结构和嵌套分支结构进行讲解,并使用逻辑运算符对条件进行限制,如猜字谜时,需要限定谜底的数据类型,是数字还是字符,还需要进行多次猜测,每次猜测后返回的数据都要有提示的作用。3.3循环结构假设要计算1~1000以内的所有奇数之和,经常需要重复执行同一串语句。利用循环结构可以控制程序的某一部分按需要重复执行。循环结构可以用较少的语句解决复杂的运算,它是一种重要的、常用的程序设计方式。Python中的循环语句有for和while。本节讲述Python的循环结构及相关语句。3.3.1while循环——语法在while语句中,当条件表达式为True时,就重复执行语句块;当条件表达式为False时,就结束执行语句块。while语句的语法格式如下。while条件:语句块条件为True重复执行语句块,每次执行完毕后重新判断条件。条件为False退出循环,继续执行循环结构后面的代码。注意事项循环体内必须有使条件趋向False的语句,否则将产生无限循环。while循环——计算1到100的累加和下面通过一个示例演示while语句的使用。在Chapter03文件夹中创建一个calculate.py文件,在该文件中使用while循环计算1~100的和,具体代码如文件3-8所示。文件3-8calculate.pyi=1sum=0whilei<101:sum+=ii+=1print("1+2+···+100=%d"%sum)在上述代码中,程序功能是实现1到100的累加和。当i=1时,i<101,此时执行循环体语句块,sum为1,i为2。当i=2时,i<101,此时执行循环体语句块,sum为3,i为3。以此类推,直到i=101,不满足循环条件,此时程序执行第6行代码。图3-17计算1~100的和由图3-17可知,计算1~100的结果为5050。数学验证:\sum_{i=1}^{100}i=\frac{100\times101}{2}=5050while循环——无限循环问题与改进while循环必须有停止运行的途径,否则就会无限循环下去,示例如下。i=1whilei<10:print("hello,world")可以看到,i的值一直没有发生变化,会一直小于10,因此循环会一直执行,必须强行终止程序,才能停止循环。在PyCharm中强行终止程序,需要单击运行框左侧工具栏或界面右上角的按钮,终止程序后的运行情况如图3-18所示。图3-18终止程序后的运行情况改进程序,可以添加一行程序,使i可以不断地增大,程序如下。i=0whilei<10:i=i+1print("hello,world")循环程序共运行了10次,即打印代码共运行了10次。关键改进:在循环体内添加i=i+1,使循环变量不断增大,最终满足退出条件。3.3.2for循环——遍历结构是序列Pythonfor循环可以遍历任何序列的项目,如一个列表或者一个字符串。使用for语句遍历序列的语法格式具体如下。foriteminobject:语句块上述代码中,for、in为关键字,object是序列,例如,当object是字符串时,item是字符串中的每一个字符;当object是列表时,item是列表中的每一个元素。for后面是每次从序列取出的一个元素。文件3-9Esequence.pyforiin"Python":print(i)在Chapter03文件夹中创建一个Esequence.py文件,在该文件中遍历"Python"字符串。图3-19文件Esequence.py的运行结果由图3-19可知,for语句循环执行了6次,for语句的循环执行次数是根据遍历结构的元素个数确定的,每次从遍历结构中取出一个元素放在循环变量中,对于每个循环变量就执行一次语句块。for循环——遍历结构是range()函数当需要遍历数字序列时,可以使用range()函数,它会生成一个数列,其语法格式如下。foriinrange(start,end,step):语句块其中start是计数的起始值,可以省略,省略时则从0开始计数;end是计数的结束值,不包括end本身,不能省略;step是步长,即两个数之间的间隔,省略时则表示步长为1。例如,range(0,5)表示0、1、2、3、4。range(end)从0开始,步长为1,到end-1结束。例:range(5)→0,1,2,3,4range(start,end)从start开始,步长为1,到end-1结束。例:range(2,6)→2,3,4,5range(start,end,step)从start开始,步长为step,到end-1结束。例:range(0,10,2)→0,2,4,6,8for循环——水仙花数示例下面通过一个示例演示range()函数的使用,水仙花数指的是一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如,153是一个水仙花数。文件3-10Narcissi.pyforiinrange(100,1000):a=int(i/100)b=int(i%100/10)c=int(i%10)ifpow(a,3)+pow(b,3)+pow(c,3)==i:print("水仙花数:",i)在上述代码中,for语句的循环执行次数是根据遍历结构的元素个数确定的,每次从遍历结构中取出一个元素放在循环变量中,对于每个循环变量就执行一次语句块。pow()函数返回的值,判断变量i是否等于水仙花数。图3-20遍历输出100~999之间的水仙花数由图3-20可知,输出的水仙花数为153、370、371和407。文件3-10的程序还可以修改成如下代码。foriinrange(100,1000):if(i%10)**3+(i//10%10)**3\+(i//100)**3==i:print("水仙花数:",i)3.3.3嵌套循环——基本语法Python允许一个循环体中嵌入另一个循环,即循环嵌套。例如,在for循环中嵌套while循环,具体格式如下。for循环变量in遍历结构:语句块while条件:循环语句块for语句开始循环后,每次循环都要执行其缩进中的所有代码,包括while循环,while循环结束后,for循环的一次循环才算结束。for循环中嵌套for循环、while循环中嵌套while循环及while循环中嵌套for循环与此类似。下面以九九乘法表的打印为例,详细介绍循环嵌套的使用。九九乘法表的每一行的表达式都形如j×i=i*j;从第1行到第9行,i的值从1递增到9;每一行的i值相同,j值从1递增到i,解题思路如下:•因数从1到9逐个循环,可以使用循环结构(for循环、while循环)•外层循环使i从1递增到9,内层循环表达每行的输出内容,将j从1递增到i,打印表达式并用制表符分隔•每行打印完成后,进行换行嵌套循环——for循环嵌套for循环打印九九乘法表在Chapter03文件夹中创建一个名为for-for.py的文件,在该文件中通过for循环嵌套结构打印九九乘法表,具体代码如文件3-11所示。文件3-11for-for.pyforiinrange(1,10):forjinrange(1,i+1):print('{}x{}={}\t'.format(j,i,i*j),end='')print()在上述代码中,第1行代码为外层for循环,其中,第2~3行代码为内层for循环,变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j=i*j。使用print()函数打印结果,使用format方法格式化字符串;"\t"代表的是tab键,即4个空格;"end=''"表示在每一个计算结束时加一个空格。执行完一次循环后,用print()函数换行输出,继续下一次循环,直至输出九行九列的乘法表。图3-21使用for-for循环打印九九乘法表由图3-21可知,输出的九九乘法表为正三角形,直角在左下方。嵌套循环——while循环嵌套while循环打印九九乘法表在Chapter03文件夹中创建一个名为while-while.py的文件,在该文件中通过while循环嵌套结构打印九九乘法表,具体代码如文件3-12所示。文件3-12while-while.pyi=1whilei<=9:j=1while(j<=i):#j的大小是由i来控制的print(f'{i}*{j}={i*j}',end='\t')j+=1print('')i+=1在上述代码中,第2行代码为外层while循环,第4行代码为内层while循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j=i*j。图3-22使用while-while循环打印九九乘法表由图3-22可知,输出的九九乘法表为正三角形,直角在左下方。比较图3-21与图3-22可知,图3-21的第1列为1×j=j,图3-22的第1列为i×1=i。嵌套循环——倒序打印九九乘法表(直角在左上方)在Chapter03文件夹中创建一个名为Re-while-while.py的文件,在该文件中通过使用while-while嵌套循环实现倒序打印输出九九乘法表,具体代码如文件3-13所示。文件3-13Re-while-while.pyi=9whilei>=1:j=1whilej<=i:print('{}x{}={}\t'.format(i,j,i*j),end='')j=j+1print()i=i-1在上述代码中,第2行代码为外层while循环,其中,第4~6行代码为内层while循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j=i*j。图3-23使用while-while循环倒序打印九九乘法表由图3-23可知,输出的九九乘法表为倒三角形,直角在左上方。嵌套循环——while循环嵌套for循环打印九九乘法表在Chapter03文件夹中创建一个名为while-for.py的文件,在该文件中通过while循环与for循环的嵌套结构打印九九乘法表,具体代码如文件3-14所示。文件3-14while-for.pyi=1whilei<=9:forjinrange(1,i+1):#range()函数左闭右开print(f'{i}*{j}={i*j}',end='')i+=1print()在上述代码中,第2行代码为外层while循环,第3行代码为内层for循环,其中变量i控制行,变量j控制列,乘法表中的每一项可以表示为i×j=i*j。图3-24使用while-for循环打印九九乘法表由图3-24可知,输出的九九乘法表为正三角形,直角在左下方。拓展技能:尝试改变九九乘法表的输出样式第1列均为1×j=j形式,倒三角形打印九九乘法表,直角在左上方,有几种实现方法?3.3.4break语句break语句可以跳出for和while的循环体,break语句可以使程序立即退出循环,转而执行该循环外的下一条语句,如果break语句出现在嵌套循环中的内层循环,则break语句只会跳出当前层的循环。质数又称素数,指的是在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。下面通过一个示例演示break语句的使用。文件3-15prime.pyforninrange(2,10):forxinrange(2,n):ifn%x==0:print(n,'equals',x,'*',n//x)breakelse:#循环中没有找到元素print(n,'isaprimenumber')在上述代码中,使用了for循环的嵌套结构,当"n%x==0"时,执行break语句,循环语句中有else子句,else语句在内层for循环终止时执行,但循环被break终止时不执行。图3-25查询2~9之间的质数由图3-25可知,2~9之间的质数有2、3、5、7,其余的数均可以由两个非1和其本身的数相乘得来。3.3.5continue语句continue语句可以跳过当前循环中的当次循环,即跳过当前循环体中剩余语句,然后继续进行下一轮循环。下面通过一个示例演示continue语句的使用。文件3-16even.pyforiinrange(1,11):ifi%2!=0:continueprint(i)在上述代码中,当i不是偶数时,通过continue语句跳过当前循环并进入下一个循环,因此只有当i是偶数时才会输出。图3-26输出1~10之间的偶数由图3-26可知,1~10之间的偶数分别为2、4、6、8、10。break语句立即退出整个循环,执行循环后面的代码。continue语句跳过本次循环剩余语句,直接进入下一次循环判断。思考:如果使用break语句,将会如何输出呢?3.3.6pass语句pass语句不作任何操作,它只在语法上需要一条语句但程序不需要任何操作时使用,具体代码如下。whileTrue:pass程序将会陷入死循环,只能终止程序,需要单击右上角的按钮,或者使用Ctrl+C组合键等待键盘中断,当执行pass语句时,程序会忽略该语句,按顺序执行其他语句。pass的主要用途作为占位符,在代码结构尚未完成时保持语法正确定义空函数或空类时使用在条件分支中表示"什么都不做"使用示例defmy_function():pass#待实现classMyClass:pass#待实现实验:设计一个简易计算器——实验目的与要求【实验目的】•掌握无限循环结构的使用•掌握continue语句与break语句跳出循环的方法•掌握input()函数与print()函数实现人机对话•掌握多分支结构的设计【实验要求与内容】编写一个程序,设计简单计算器,实现对数基本的加、减、乘、除运算,简单计算器的开发流程如下:•欢迎打印菜单,提示用户选择要进行的运算•用户选择运算类型•接收用户输入的值,用于参与运算•输出运算的结果实验:设计一个简易计算器——流程图图3-27设计简易计算器的程序流程图由图3-27可知,可设计多分支结构来实现简单运算:加减乘除,使用无限循环使计算器可以重复使用,使用continue语句跳出所在分支结构,使用break语句跳出无限循环结构,程序结束。whileTrue无限循环使计算器可以重复使用,持续等待用户输入。continue语句跳出当前分支结构,回到循环开始处重新执行。break语句跳出无限循环结构,程序运行结束。实验:设计一个简易计算器——多次计算的循环结构【实验步骤】设计计算器的多次计算在Chapter03文件夹中创建一个calculator.py文件,在该文件中调用input()方法实现在控制台输入包裹的重量,具体代码如文件3-17所示。文件3-17calculator.pyprint("欢迎使用简易计算器!")whileTrue:pass#计算器的运算choice=input("是否继续使用计算器?(y/n)")ifchoice=="n":break使用while无限循环结构,使计算器可以重复使用,使用if语句和input()函数,在键盘输入"n"时,使用break语句跳出循环,即程序运行结束。pass语句在第3行表示占位语句,无实际操作。实验:设计一个简易计算器——数据输入实现在控制台输入数据与算法在calculator.py文件中调用input()方法实现数据的输入与算法的选择,具体代码如下。num1=float(input("请输入第一个数字:"))op=input("请选择运算符(+,-,*,/):")num2=float(input("请输入第二个数字:"))输出两个数据和运算符,其中,两个数据均为浮点型数据,运算符为字符型。需要注意的是,由于接受的用户输入是字符串,需要将字符串转为数值类型。使用float()函数将字符串转换为浮点数,以支持小数运算。num1和num2使用float()将输入字符串转换为浮点型数据,支持整数和小数运算。op(运算符)字符串类型,接收用户输入的运算符:+、-、*、/。实验:设计一个简易计算器——计算器功能实现实现计算器的基本功能在calculator.py文件中,使用if...elif...else结构与if...else结构的嵌套实现计算器的运算,具体代码如下所示。ifop=="+":result=num1+num2elifop=="-":result=num1-num2elifop=="*":result=num1*num2elifop=="/":ifnum2==0:print("除数不能为0,请重新输入")continueelse:result=num1/num2else:print("输入的运算符有误,请重新选择")continueprint("计算结果为:",result)、使用if...elif...else多分支结构,实现加减乘除运算,当使用除法运算时,因为除数不能为0,所以要进行分类讨论,即使用嵌套结构。第10行使用continue语句跳出if...else结构。当运算符不是加减乘除中的一种时,需要重新选择运算符,第14行使用continue语句跳出if...elif...else结构。实验:设计一个简易计算器——实验结果与小结图3-28设计简易计算器由图3-28可知,从键盘任意输出的第一位数为29,选择除法"/",第二位数为20,计算结果为1.45,选择继续使用计算器,可以输出"y",就可以继续使用计算器了;如果选择不继续使用计算器,可以输入"n",程序运行结束。【实验小结】本实验设计简单计算器,实现对数基本的加、减、乘、除运算。读者还可以扩展计算器的功能,比如整除、取余、开平方数等,当需要进行复杂的运算时,可以进行自由选择。人工智能入门:关注全民健康——背景介绍人工智能在医疗健康领域有着广泛的应用,其中包括疾病预防、诊断、治疗等方面。据统计,我国慢性病人群占总人口比例已经达到了四分之一,甚至在城市地区超过三分之一。其中高血压、糖尿病和心血管疾病等慢性病发病率较高,且易于引发其他并发症。如何对这些慢性病人群进行有效的防治和管理,已经成为了一个全民健康问题。为解决这个问题,可以通过各种传感器和监测设备采集患者的各种生理指标,如血压、血氧、心电图、体重、体温等指标,并将数据上传至云端。下面通过计算BMI值以判断身体胖瘦状况,并制定相应的运动健身计划。判断身体胖瘦状况——解题思路多点采集数据,以体重为例进行说明。通过BMI值的计算,关注全民的健康状况。例如,一个人体重55kg、身高1.7m,其BMI为19.03。在国内,BMI如果BMI<18.5,则属于"偏瘦";18.5≤BMI<24,则属于"正常";24≤BMI<28则属于"偏胖";BMI≥28,则属于"肥胖"。现设计程序计算BMI,并输出BMI对应的身体状况,解题思路如下。步骤1:输入数据输入体重和身高的值。步骤2:计算BMI计算BMI:步骤3:范围比较将BMI与各个范围比较,找到对应的身体状况。步骤4:输出结果打印出身体状况信息。BMI范围身体状况BMI<18.5偏瘦18.5≤BMI<24正常24≤BMI<28偏胖BMI≥28肥胖判断身体胖瘦状况——代码实现与结果在Chapter03文件夹中创建一个名为BMI.py的文件,具体代码如文件3-18所示。文件3-18BMI.pyweight=float(input("请输入您的体重(kg):"))height=float(input("请输入您的身高(m):"))bmi=weight/pow(height,2)print(f"BMI:{bmi:.2f}")ifbmi<18.5:level="偏瘦,体重太轻了,要增加营养哦"if18.5<=bmi<24:level="正常,您的身体非常健康,太棒啦"if24<=bmi<28:level="偏胖,规律作息、合理饮食,会变得健康哦"ifbmi>=28:level="肥胖,保持健康的身体是爱护自己的表现,要运动起来呀"print("身体状况为:",level)在上述代码中,使用input()函数接收键盘输入的浮点型数据,并计算BMI值,使用if语句判断BMI值的范围,并输出对应BMI值范围的身体状况。图3-29文件BMI.py的运行结果由图3-29可知,输入的体重和身高分别是60、1.86,经过BMI公式的计算,BMI=17.34,输出"身体状况为:偏瘦,体重太轻了,要增加营养哦"。制定运动健身计划——背景与运动方式运动可以促进心血管健康、增强肺部功能、提高免疫力、降低血糖、血脂等生理指标,还能增强身体的耐力、灵敏度和协调性,改善体型,提高心理健康和生活质量。为了保持健康,每个人应该坚持适量的运动。运动的种类和方式可以视个人的身体状况、年龄、性别和兴趣爱好而定。一般来说,当BMI值<18.5时,需要增肌;当BMI值≥24,尤其是当BMI值≥28时,需要减重。表3-2常见的运动方式运动类型解释说明具体项目Cardio有氧运动cycling(骑自行车)、swimming(游泳)、running(跑步)StrengthTraining肌肉训练push-ups(俯卧撑)、sit-ups(仰卧起坐)、plank(平板支撑)、squats(蹲起)Duration持续时间根据BMI和运动目标动态计算使用Python中的random模块,用于随机选择运动的方式,使用分支结构选择运动的目标,使用for循环结构遍历所有运动,并计算每日需要消耗的热量和运动时间。制定运动健身计划——代码实现在Chapter03文件夹中创建一个名为sports_plan.py的文件,具体代码如文件3-19所示。文件3-19sports_plan.pyimportrandomdefexercise_plan(height,weight,age,gender,goal):ifgender=='male':calories_per_day=10*weight+6.25*height-5*age+5elifgender=='female':calories_per_day=10*weight+6.25*height-5*age-161ifgoal=='loseweight':days_per_week=6minutes_per_day=60minutes_of_cardio=(calories_per_day*0.6)/(days_per_week*minutes_per_day)minutes_of_strength_training=(calories_per_day*0.4)/(days_per_week*minutes_per_day)elifgoal=='buildmuscle':

温馨提示

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

最新文档

评论

0/150

提交评论