版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章程序流程控制本章知识导读3.1程序的基本结构3.2条件表达式3.3选择结构3.4循环结构3.5程序的异常处理综合实例CATALOGUE目录01程序的基本结构1.IPO模型(Input-Process-Output)(1)输入(Input):输入是一个程序的开始。需要处理的数据有多种来源,形成了多种输入方式,包括交互输入、参数输入、随机数据输入、文件输入等。(2)处理(Process):处理是程序对输入数据进行计算产生输出结果的过程。计算问题的处理方法统称为“算法”。(3)输出(Output):输出是程序输出结果的方式。程序输出结果的方式包括控制台输出、图形输出、文件输出等。(1)输入(Input)01通过input()函数或GUI组件接收用户输入的数据,需考虑数据类型转换(如字符串转数值)及异常处理,确保程序鲁棒性。例如:age=int(input("请输入年龄:"))需捕获ValueError。用户交互输入02从文本、CSV或JSON等文件中加载数据,常用open()结合read()/readlines()方法,或使用pandas库高效处理结构化数据。例如:withopen('data.txt')asf:lines=f.readlines()。文件读取03通过API请求(如requests库)或爬虫技术从网页获取数据,需处理网络延迟、身份验证及反爬机制。例如:response=requests.get('/data')。网络数据获取(2)处理(Process)条件分支逻辑循环迭代操作数据转换与计算使用if-elif-else结构实现多路径处理,结合逻辑运算符(and/or/not)处理复杂条件。例如:根据成绩区间输出等级(A/B/C/D)。通过for循环遍历序列(如列表、字典)或while循环满足条件时重复执行,需注意循环终止条件避免死循环。例如:foriinrange(10):print(i)。应用数学运算(如abs()、round())、字符串操作(如split()、join())或自定义函数实现业务逻辑。例如:将摄氏温度转换为华氏温度:F=(9/5)*C+32。(3)输出(Output)控制台打印使用print()函数输出文本或变量值,可通过格式化(f-string或.format())增强可读性。例如:print(f"结果:{result:.2f}")保留两位小数。文件写入将结果保存至文件,模式包括覆盖写入('w')或追加('a'),需注意编码问题。例如:withopen('output.txt','w')asf:f.write("Done")。可视化展示借助matplotlib或seaborn库生成图表(如折线图、柱状图),直观呈现数据分析结果。例如:plt.plot(x,y);plt.show()。1232.程序流程图(1)开始框和结束框。表示程序的开始和结束。(2)输入框/输出框。表示输入和输出数据。(3)处理框。表示要执行的流程或处理。(4)流向线。表示程序或算法的走向。(5)判断框。表示条件判断,根据判断的结果执行不同的分支。3.程序的基本结构程序的三种基本结构(1)顺序结构(2)选择结构(3)循环结构(1)顺序结构常用于变量声明、赋值操作、函数调用等基础编程场景,例如计算两个数的和时需要先读取输入再执行加法运算。典型应用场景程序按照代码的书写顺序依次执行,没有分支或循环,是最基础的控制结构,适用于简单任务如数据初始化或连续计算步骤。线性执行流程执行过程中不会跳过任何语句,每条指令必须等待前一条指令执行完毕才能开始,保证了程序的确定性和可预测性。无跳转特性(2)选择结构(if语句)多分支结构(if-elif-else)通过多个条件判断实现多路分支,每个条件独立评估,如根据温度范围输出"寒冷""温暖"或"炎热"的提示。03根据条件真假分别执行不同代码块,实现二选一逻辑,例如根据成绩判断"及格"或"不及格"。02双分支结构(if-else)单分支结构(if)当条件表达式为真时执行特定代码块,否则跳过,适用于单一条件判断场景,如检查用户年龄是否满足投票要求。01(3)循环结构for循环通过遍历序列(如列表、字符串)或指定次数重复执行代码块,常用于已知迭代次数的场景,例如计算1到100的累加和。while循环在条件满足时持续执行循环体,适合处理不确定迭代次数的任务,如读取文件直到末尾或等待用户输入特定指令。循环控制语句break用于立即终止整个循环,continue跳过当前迭代进入下一次循环,两者可优化循环效率,例如在搜索数据时找到目标后立即退出循环。02条件表达式3.2条件表达式3.2.1关系运算符Python语言中的关系运算符共6个,如下表所示(设表中a=1,b=2)。运算符数学符号描述示例<<小于(a<b)返回True<=≤小于或等于(a<=b)返回True>>大于(a>b)
返回False>=≥大于或等于(a>=b)返回False===等于(a==b)返回False!=≠不等于(a!=b)
返回True>>>a,b=10,20>>>0<a<bTrueFalseAB提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。a>0且a<b,结果为True答案解析单选题1分>>>a,b=10,20>>>15<a<bTrueFalseAB提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。a<15,结果为False答案解析单选题1分>>>a,b=10,20>>>a==bTrueFlaseAB提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。判定a和b是否相等,结果为False答案解析单选题1分>>>a>"a"TrueFalseTraceback(mostrecentcalllast):File"<pyshell#20>",line1,in<module>a>"a"TypeError:'>'notsupportedbetweeninstancesof'int'and'str'ABC提交单选题1分>>>"AB">"ab"TrueFalseAB提交单选题1分>>>"a"<"ab"TrueFlaseAB提交单选题1分>>>ord('a'),ord('A')答案:[填空1]
提示:ord()是Python中的一个内置函数,它的作用是将一个字符转换为对应的ASCII码值(或Unicode码值)。语法:ord(character)参数:character是一个长度为1的字符串,即单个字符。返回值:返回该字符对应的ASCII码值(或Unicode码值)。作答填空题1分3.2.1关系运算符Python关系运算符最大的特点是可以连用,非常类似在数学中的写法,与日常的理解完全一致。3.2.2逻辑运算符逻辑运算符可以用来表达更为复杂的条件表达式,主要有and(与)、or(或)和not(取反)。3.2.2逻辑运算符逻辑运算条件1的值条件2的值结果andTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseTrueFalseorTrueTrueTrueTrueFalseTrueFalseFalseFalseFalseTrueTruenotTrue-FalseFalse-True逻辑表达式取值真值表如下表所示。变量c未定义,则以下逻辑表达式的结果为:>>>3>5andc>3TrueFalse报错ABC提交单选题1分变量c未定义,则以下逻辑表达式的结果为:>>>3<5andc>3TrueFalse报错ABC提交单选题1分思考:表达式的应用使用各种运算符可以构建不同的条件表达式,例如:1)假设有整数x,表示x为一个偶数。
x%2==02)假设有整数x,表示x是3的倍数且个位上数字为5。
x%3==0andx%10==53)假设三角形的3条边分别为a,b,c,表示a,b,c能构成一个三角形。
(a+b>c)and(b+c>a)and(a+c>b)and(a>0)and(b>0)and(c>0)4)假设年份year,则表示year为闰年条件是:如果year是4的倍数且不是100的倍数,或者year是400的倍数,那么year即为闰年。(year%4==0andyear%100!=0)or(year%400==0)这里注意关系运算符“==”和赋值符号“=”的区别。03选择结构3.3选择结构Python语言中通过if、elif、else等保留字提供单分支、双分支和多分支结构来解决程序中出现的选择问题。3.3.1单分支结构单分支结构是最简单的一种选择结构,其语法格式如下:if<条件表达式>:<语句块>条件表达式后面的“:”不可缺少。<语句块>前务必注意代码缩进,且同一个代码块必须保证相同的缩进量。语句块是否执行依赖于<条件表达式>判定的结果。Python中使用if-else语句表示双分支结构,语法格式如下:if<条件表达式>:<语句块1>else:<语句块2>注:Python语言还提供了双分支结构的简洁表达形式,语法格式如下:
<语句1>if<条件表达式>else<语句2>
当条件表达式的值为True时,执行语句1,否则执行语句2。其中语句1、语句2一般是数字类型或字符串类型的一个值。如:print(x)ifx>0elseprint(-x)3.3.2双分支结构:if-else语句条件表达式和else后面的“:”不可缺少。语句块注意缩进条件表达式的值为True,执行语句块1,否则执行语句块2;语句块1和语句块2在一次运行过程中有且只有一个能被执行。3.3.2双分支结构:if-else语句思考:输入三角形三边,求三角形面积,对用户输入的数据做合法性检查。importmatha=float(input("请输入三角形的边长a:"))b=float(input("请输入三角形的边长b:"))c=float(input("请输入三角形的边长c:"))if(a+b>canda+c>bandb+c>aanda>0andb>0andc>0):h=(a+b+c)/2area=math.sqrt(h*(h-a)*(h-b)*(h-c))
print("三角形的面积为:{:.2f}".format(area))else:
print("用户输入数据有误!")3.3.3多分支结构:if-elif-else语句问题较为复杂时,程序需引入多分支结构,语法格式如下:if<条件表达式1>:<语句块1>elif<条件表达式2>:<语句块2>elif<条件表达式3>:<语句块3>……else:<语句块n>其中,关键字elif是elseif的缩写。else后面不可以加条件,else分支为可选思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。需要从用户输入的三位数中分离出百位,十位和个位分别是多少?从百位,十位和个位中找出最大的一个数字。思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。需要从用户输入的三位数中分离出百位,十位和个位分别是多少?num=int(input("请输入一个三位正整数:"))a=str(num)[0]#取num的百位数字b=str(num)[1]#取num的十位数字c=str(num)[2]#取num的个位数字代码中分离一个三位整数利用了字符串的切片,因此,在切片之前需要用str函数将输入的数据从整数类型转换为字符串类型。思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。需要从用户输入的三位数中分离出百位,十位和个位分别是多少?num=int(input("请输入一个三位正整数:"))a=num//100#取num的百位数字b=num//10%10#取num的十位数字c=num%10#取num的个位数字也可以使用整除“//”和求余“%”运算符来分离整数的每一位思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。从百位,十位和个位中找出最大的一个数字。ifa>b:
ifa>c:max_num=a
else:max_num=celse:
ifb>c:max_num=b
else:max_num=cprint(num,"中最大的数字是:",max_num)思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。从百位,十位和个位中找出最大的一个数字。ifa>banda>c:max_num=aifb>aandb>c:max_num=bifc>aandc>b:max_num=cprint(num,"中最大的数字是:",max_num)思考:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入520,输出5;输入937,输出9。从百位,十位和个位中找出最大的一个数字。print(num,"中最大的数字是:",max(a,b,c))绝大多数的计算问题,都有很多种解决方法。解决问题时任务是首先找到一个正确的算法,之后力求清晰、高效,代码简洁、明了,让阅读和维护变得简单轻松。当score为75分时,以下两段代码中等级分别为多少?将结果填写在对应代码段上方空格内。
[填空1]
[填空2]
作答ifscore>=60.0:1ifscore>=90.0:
grade='D'2
grade='A'elifscore>=70.0:3elifscore>=80.0:grade='C'4grade='B'elifscore>=80.0:5elifscore>=70.0:grade='B'6grade='C'elifscore>=90.0:7elifscore>=60.0:grade='A'8grade='D'填空题2分实例3-1:四则运算幼儿园小朋友刚开始接触加减乘除四则运算,为帮助其加强学习设计一个程序,输入任意两个数字,选择加、减、乘、除运算符进行运算,输出相应结果。04循环结构3.4循环结构3.4.1遍历循环:for语句for语句用一个循环控制器(Python语言中称为迭代器)来描述其语句块的重复执行方式。基本语法格式如下:for<循环变量>in<迭代器>:<语句块>for和in都是关键字,语句中包含了三个部分,其中最重要的就是迭代器。由关键字for开始的行称为循环的头部,语句块称为循环体。语句块需要缩进,且块中各个语句的缩进量必须相同。3.4.1遍历循环:for语句1.字符串作为迭代器字符串类型本身就是一种迭代类型,可以直接作为for语句中的迭代器使用。foriin"abcd":print(i,end="")只有当for循环正常执行并结束之后,else语句才会被执行。for<循环变量>in<迭代器>:<语句块1>else:<语句块2>思考:str=input("请输入一句英文:")count_upper=0count_lower=0count_digit=0forsin
str:
ifs.isupper():count_upper=count_upper+1
ifs.islower():count_lower=count_lower+1
ifs.isdigit():count_digit=count_digit+1print("大写字符:",count_upper)print("小写字符:",count_lower)print("数字字符:",count_digit)统计英文句子中大写,小写和数字各有多少个?3.4.1遍历循环:for语句2.range()函数生成迭代器range()函数是Python语言中的一个内置函数,调用这个函数能产生一个迭代序列。range()函数有以下几种不同的调用方式。
3.4.1遍历循环:for语句2.range()函数生成迭代器range()函数是Python语言中的一个内置函数,调用这个函数能产生一个迭代序列。range()函数有以下几种不同的调用方式。
3.4.1遍历循环:for语句2.range()函数生成迭代器range()函数是Python语言中的一个内置函数,调用这个函数能产生一个迭代序列。range()函数有以下几种不同的调用方式。
思考:利用for循环求1至100中所有整数相加的和思考:利用for循环求1至100中奇数和偶数的和分别是多少。3.4.2条件循环:while语句
很多应用无法在执行之初明确迭代器,需要根据条件判断结果确定,称为条件循环。条件循环一直保持循环操作直到循环条件不满足才结束,不需要提前确定循环次数。
while语句的语法格式如下:while<条件表达式>:
<语句块>
注:这里条件表达式后的“:”不可省略,语句块注意缩进。思考:利用for循环求1至100中所有整数相加的和思考:求非负数字序列中的最小值、最大值和平均值。用户输入-1就表示序列终止。3.4.3循环的嵌套在一个循环体内又包含一个完整的循环结构,称为循环的嵌套。
思考:打印“*”组成的图形3.4.3循环的嵌套思考:打印“*”组成的图形3.4.3循环的嵌套思考:打印九九乘法表。3.4.4循环保留字:break和continue循环结构有两个保留字:break和continue,它们用来辅助控制循环执行。print("{:=^19}".format("break循环开始"))foriinrange(2):print("{:*^19}".format("i={}的外循环".format(i)))forjinrange(2):ifj==1:print("{:^20}".format("第{}行{}列".format(i,j)))else:break
print("{:=^19}".format("break循环结束"))continue=====break循环开始=====******i=0的外循环************i=1的外循环******=====break循环结束========continue循环开始====******i=0的外循环******第0行1列******i=1的外循环******第1行1列===continue循环结束====continuecontinueforiinrange(1,10+1):ifi%3==0:breakprint(i,end='')foriinrange(1,10+1):ifi%3==0:continueprint(i,end='')输出:12输出:12457810当i是3的倍数的时候,执行break语句。break语句的作用是立刻结束整个for循环,因此输出只有1和2两个数字。当i是3的倍数的时候,执行continue语句。continue语句的作用是结束这一轮的循环,程序跳转到循环头部,根据头部的要求继续,因此输出不是3的倍数的所有数字。3.4.4循环保留字:break和continue思考:else子句foriinrange(5):print(i,end="")else:print("for循环正常结束!")foriinrange(5):print(i,end="")ifi>=3:breakelse:print("for循环正常结束!")输出:01234for循环正常结束!输出:0123序列遍历结束而正常退出循环执行else中的语句由于break语句而提前退出循环else中语句不被执行思考:在3.3.1和3.3.2节中提到循环中的else子句,试对比break对else子句的影响。print("====循环开始====")print("====循环开始====")j
=
0j
=
0foriin"ABC":foriin"ABC":print("{}:{}".format(j,i))print("{}:{}".format(j,i))j
=
j+1j
=
j+1else:ifj==1:breakprint("====循环结束====")else:
print("====循环结束====")3.4.5random库随机数在计算机应用中十分常见。Python语言内置的random库采用梅森旋转算法(MersenneTwister),主要用于产生各种分布的伪随机数序列,可用于除随机性要求更高的加解密算法以外的大多数工程应用。函数描述random()生成一个[0.0,1.0)之间的随机小数randint(a,b)生成一个[a,b]之间的整数randrange(start,stop[,step]生成一个[start,stop)之间以step为步长的随机整数choice(seq)从序列seq中随机返回一个元素uniform(a,b)生成一个[a,b]之间的随机小数shuffle(seq)将序列类型中的元素随机排列,返回打乱后的序列sample(pop,k)从pop类型中随机选取k个元素,以列表类型返回seed(n)初始化随机数种子,默认值为当前系统时间3.4.5random库random库的引用方法与math库一样,可以采用以下两种方式实现。importrandom或fromrandomimport*示例:>>>fromrandomimport*#引入random库>>>random()
#生成一个[0.0,1.0)之间不包括1.0的随机小数>>>randint(1,10)
#生成一个[1,10]之间的随机整数>>>randrange(1,10,2)
#从1,3,5,7,9中随机选择一个整数>>>choice("Python")
#从字符串序列中随机选择一个字符>>>uniform(1,10)
#生成一个[1,10)之间的随机小数3.4.6turtle库turtle库是一个直观有趣的图形绘制函数库,是Python的标准库之一。弧形绘制思考:绘制以下图形。实例3-2:强化四则运算修改实例3-1中的人工出题方式为计算机随机出题,要求根据输入出题数量,显示相应的运算公式及结果,程序运行效果如下图所示:实例3-3:绘制五角星绘制一个红色的五角星,如下图所示。05程序的异常处理1.异常处理的基本概念异常定义与分类程序异常是指程序在运行过程中出现的非预期事件,可分为语法错误(SyntaxError)、运行时错误(RuntimeError)和逻辑错误(LogicError)。异常处理机制通过捕获和处理这些错误,确保程序在部分代码失效时仍能继续执行或优雅退出。异常处理的重要性异常处理能显著提升程序的健壮性和容错性,避免因用户输入错误、文件丢失或网络中断等问题导致程序崩溃,同时提供清晰的错误日志以便开发者调试。通过try块包裹可能引发异常代码,except块捕获特定异常并处理。try:<语句块1>except<异常类型>:<语句块2>2.try-except语句的用法基本语法结构1m=eval(input("请输入一个整数:"))2print(m)1try:2m=eval(input("请输入一个整数:"))3print(m)4exceptNameError:5print("输入错误,请输入一个整数!")运行结果输出:请输入一个整数:INT输入错误,请输入一个整数!3.finally与else子句的应用无论是否发生异常,finally块中的代码(如资源释放、文件关闭)都会执行,常用于清理操作。例如,数据库连接即使在查询出错时也能通过finally确保关闭。finally的强制执行else块仅在try块未触发异常时执行,适合放置依赖try块成功执行的代码。例如,文件读取成功后,在else中解析内容,逻辑更清晰。else子句的附加逻辑0102try:<语句块1>except<异常类型1>:<语句块2>else:<语句块3>finally:<语句块4>06综合实例综合实例3-1:计算天天练02通过累加器变量统计正确率,按不同难度等级(如10/20/50题)生成带星级评价的成绩报告单。成绩统计04利用列表数据结构存储错误题目,程序结束时输出错题汇总分析,帮助学生针对性改进薄弱环节。进阶2:错题本功能01通过循环实现加减乘除随机出题,每次生成两个随机数和运算符,要求输入答案并反馈正确性,适合小学生算术能力提升。基础运算训练03引入时间变量记录答题耗时,结合条件判断语句设置倒计时机制,当超时未作答则自动跳转下一题,增强训练紧迫感。进阶1:计时挑战模式综合实例3-1:计算天天练为了帮助幼儿园的小朋友每天练习10以内四则运算,设计一个程序。输入想要挑战
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年介入手术室护理质控风险防控汇报
- 生态环境部门环境安全隐患排查标准化检查表
- 一级建造师(机电工程管理与实务)试题及解析+考点知识预测(上海市)
- 校本研修组织实施题库(含答案)
- 微观经济学试卷及答案
- 企业生产安全事故应急处置培训考试试卷
- 2026土地登记代理人理论知识测试题(含答案)
- 2026年乡村振兴业务培训考试试卷及答案
- 2026年企业培训学习项目社会化运营培训考试题库(含答案)
- 2026年化工压力管道管理考试题库及答案
- (高清版)DB11∕T2250-2024重点用能单位能耗在线监测系统接入技术规范
- DB33T 2113-2018 公路沥青路面超薄磨耗层施工技术规范
- 医院培训课件:《新生儿支气管肺发育不良》
- 工厂汛期防汛应急预案
- 智能安防行业发展建议
- 2024山东高考英语完形填空联考模拟试题汇编(含答案详解)
- 工程振动试验分析(教材)
- 洗涤公司车间管理制度
- 器械辨认及用途课件
- GA/T 1105-2013信息安全技术终端接入控制产品安全技术要求
- FZ/T 01116-2012纺织品磁性能的检测和评价
评论
0/150
提交评论