模块3 流程控制(教案)-《程序设计基础Python》同步教学(电子工业版)

2024-11-20
| 18页
| 214人阅读
| 1人下载
普通

内容正文:

模块3 课程名称 Python程序设计基础 章名 模块3 流程控制——逻辑严谨,使用分支与循环评定奖学金 教学内容 条件分支语句、循环语句、break/continue语句 课时 6 项目性质 □演示性 □验证性 □设计性 R综合性 授课班级 授课日期 授课地点 教学目标 (1)能够根据程序的处理逻辑,选择合适的条件分支语句。 (2)熟悉循环控制结构,会使用while循环。 (3)程序中结合range函数、列表等,完成for循环处理。 (4)根据程序逻辑需要,灵活应用break和continue语句跳出循环体。 (5)学会正确使用Python缩进,标识不同的逻辑代码块。 教学重点 (1)if分支结构的用法; (2)while循环结构的用法; (3)for循环结构的用法; (4)range()函数产生数字序列; (5)break、continue关键字退出循环。 教学难点 (1)循环的处理流程; (2)循环的嵌套使用; (3)break、continue的区别。 教学准备 (1) 教材:《Python程序设计项目教程--从入门到实践》 (2) 学习平台:超星Python教学平台或职教云Python教学平台 (3) 硬件设备:装有Python开发环境的计算机; (4)教学资源:课件PPT、实训指导书 32 学科网(北京)股份有限公司 教学过程 教学环节 教学内容与过程 (教学内容、教学方法、组织形式、教学手段) 课前组织 (1)在学习平台上发布微课视频让同学们预习; (2)在学习平台上发布上课使用的PPT; (3)在学习平台上发布实训指导书; (4)在学习平台上发布本次课程学习成果检验题目。 课程内容描述 【情景导入】 · 为了鼓励学生更好完成学业、践行历史使命,某学院设立了奖学金,制定了评选标准进而表彰优秀学生。 · 在实际项目开发过程中,需要根据不同的条件执行不同的功能,也可能需要重复多次执行某些功能,这就需要控制程序的流程。 · 本项目将引入程序流程控制语句,根据学生课程成绩及评审条件,评定多位学生的奖学金。 · 按照“由易到难、逐步完善”的思路,将奖学金评定项目分解为3个任务: 【任务3.1 if语句评定单个学生的奖学金】 【任务分析】 · 为营造良好的学习氛围,某学院决定将根据学生Python和Database两门课程的成绩情况,评定学院奖学金。假定评审规则如下: · 单科成绩大于等于90分,总成绩大于185分,一等奖学金; · 单科成绩大于等于85分,总成绩大于175分,二等奖学金; · 单科成绩大于等于80分,总成绩大于165分,三等奖学金; · 不满足上述条件,则无奖学金。 · 本任务要求用户从键盘输入某同学成绩,根据评审规则评定其奖学金等级,需要完成的具体工作内容如表所示。 3.1.1 if 单分支语句 · 程序设计中遇到根据某个条件,决定是否执行某个动作(功能)的情况时,需要使用if单分支语句,其语法结构为: if 条件表达式: 代码块1 · if 关键字后附带一个条件表达式,如该条件成立则执行代码块1中的语句,然后执行后面的语句;如果条件不成立,则忽略代码块1,直接执行后面的语句。 · Python课程期末考试以60分为合格线,成绩合格则给出相应的提示,实现代码如下: # 3_1_if单分支语句示例.py score=72 if score >= 60: # 如果条件成立,则执行下面一行代码 print("恭喜,通过了Python课程考核!") # 打印提示信息 print("程序结束!") # 最后执行该行代码 · if 后面的条件表达式使用关系运算符“==”或“!=”书写,示例如下: # 3_2_使用关系运算符构建条件表达式.py # 使用双等号“==”书写条件表达式 subject='Python' if subject == 'Python': # 判断科目subject是否为Python,返回一个布尔值 print('欢迎参加Python课程学习。') # if条件判断结果为真,执行该语句 # 使用“!=”书写条件表达式 score=100 if score != 100: # 判断分数score是否为100分 print('您没有考满分,仍有提升空间!') · if 后面的条件表达式使用成员运算符“in”或“not in”书写,示例如下: # 3_3_使用成员运算符构建条件表达式.py # 使用“in”书写条件表达式 if "P" in "Python": # 判断 "P"是否在 "Python"中 print("字符'P'在'Python'字符串中。") # 使用“not in”书写条件表达式 if 50 not in [10, 20, 30]: # 判断50是否在列表 [10, 20, 30]中 print("数值50不在 [10, 20, 30]列表中。") 3.1.2 避免缩进错误 · 在书写 if 分支语句时需要注意使用“缩进”。处理文档时,使用缩进来展示逻辑结构;比如下面的目录中,通过缩进2个空格方式,说明不同内容之间的逻辑关系(上下级关系、同级关系),使其结构更加清晰。 第3章 程序流程控制语句 第1节 条件分支语句 1.1 单分支语句 1.2 双分支语句 1.3 多分支语句 第2节 循环语句 2.1 for循环语句 2.2 while循环语句 · Python 以“缩进”方式标识不同代码块之间的逻辑关系。下面的代码用于求某个数number的绝对值: # 3_4_1使用缩进标识不同代码块.py number = -5 if number < 0: # 判断数字number是否为负数 print("数值为负数,需要转变为正数!") # 满足if条件执行的代码段 number = -number # 满足if条件执行的代码段 print("输出结果为:",number) # 无论if条件是否成立都要执行的代码段 · 注意:缩进是Python代码的组成部分,有一些特殊的要求。 · (1)顶级代码必须顶格写(3-4示例中第2、第3、第6行),即如果一行代码本身不依赖于任何条件,则不能进行任何缩进; · (2)同一级别的代码,缩进必须一致;如第4行、第5行代码,属于同一个级别、同一个逻辑代码块,其缩进一致; · (3)官方建议使用4个空格作为缩进。 · 常见的缩进错误: · (1)忘记缩进 number = -5 if number < 0: print("数值为负数,需要转变为正数!") number = -number print("输出结果为:",number) · 忘记缩进也可能不报错,但可能会引起程序逻辑错误,不能产生期望的结果。 number = 5 if number < 0: print("数值为负数,需要转变为正数!") number = -number print("输出结果为:",number) · (2)不必要的缩进:可能导致程序报错 number = 5 if number < 0: print("数值为负数,需要转变为正数!") number = -number print("输出结果为:",number) · 不必要的缩进也可能并不会报错,但是却得不到正确的输出结果 number = 5 if number < 0: print("数值为负数,需要转变为正数!") number = -number print("输出结果为:",number) · (3)其它错误的缩进 number = 5 if number < 0: print("数值为负数,需要转变为正数!") number = -number print("输出结果为:",number) 3.1.3 多个判断条件 · 在 if 语句的条件表达式中结合关键字“and”、“or”实现多条件组合判断。 · (1)“条件A and 条件B”,表示两个条件A、B同时成立时,其结果为True,否则为False;示例如下: # 3_5_使用and连接条件表达式.py subject='Python' score = 92 if subject == 'Python' and score >= 90: # 判断科目是否为Python并且分数是否大于等于90 print('您的Python课程成绩优秀!') # 两个条件都成立,执行该语句、打印输出 · 在 if 语句的条件表达式中结合关键字“and”、“or”实现多条件组合判断。 · (2)“条件A or 条件B”,表示两个条件A、B同时成立时,其结果为True,否则为False;示例如下: # 3_6_使用or连接条件表达式.py today='Sunday' if today=='Saturday' or today=='Sunday': # 判断today是否为Saturday或Sunday print('今天是周末,可以休息一下了!') # 两个条件只要有一个为真,执行该语句、打印输出 3.1.4 if-else双分支语句 · Python将if语句和else语句联合使用,组成if-else双分支语句,可同时处理满足条件和不满足条件两种情况。 · 语法结构: if 条件表达式: # 条件表达式结果为“真”(True),执行代码块1; 代码块1 else: # 条件表达式结果为“假”(False),执行代码块2; 代码块2 · 当 if 条件成立(判断结果为“True”)时,执行代码块1,完毕后继续执行后面的语句; · 当 if 条件不成立(判断结果为“False”)时,执行代码块2,完毕后继续执行后面的语句。 · 例:为某门课程考试成绩设置60分及格线,考虑及格、不及格两种情况,打印不同的信息。 · 代码如下: # 3_7_if-else双分支语句示例(1).py score=82 if score>=60 : # 判断分数score是否大于等于60分 print('恭喜,您已通过考试!') # if条件判断的结果为真,执行该语句 else: print('遗憾,您未通过考试!') # if条件判断的结果为假,执行该语句 · 例:判断一个数是奇数还是偶数从而输出不同的结果。 · 代码如下: # 3_8_if-else双分支语句示例(2).py num=2022 if num % 2 == 0: # 判断num是否能被2整除 print(num,'是一个偶数') # if条件返回值为真,执行该语句 else: print(num,'是一个奇数') # if条件返回值为假,执行该语句 · 注意:if-else双分支语句需要注意以下语法规则: · (1)if 条件和 else 后面要有冒号“:”; · (2)合理使用缩进,以便区分不同的代码块。 3.1.5 if-elif-else多分支语句 · Python提供了 if-elif-else 多分支结构,从而能够对多种情况做出不同的处理。 · 语法结构: if 条件表达式1: # 如条件表达式1成立,执行代码块1;否则跳转到“elif 条件表达式2” 代码块1 elif 条件表达式2: # 如条件表达式2成立,执行代码块2;否则跳转到“elif 条件表达式3” 代码块2 elif 条件表达式3: 代码块3 ...... else: 代码块n 代码块m · 首先判断条件表达式1是否成立,如果成立则执行代码块1,执行完毕后跳转到代码块m。如条件1不成立,则继续判断条件表达式2;当条件表达式2成立时,则执行代码块2,执行完毕后跳转到代码块m。以此类推,如果所有条件均不成立,最后执行else下面的代码块n,然后跳转到代码块m。多分支语句的执行流程如图所示: · 例:根据学生成绩,划分考核等级:优秀(90分-100分)、良好(80分-90分)、中等(70分到80分)、及格(60分-70分)、不及格(0分-60分);用多分支语句实现成绩等级的判断。 · 代码如下: # 3_9_if-elif-else多分支语句示例.py score=87 if score>=90 and score<=100: # 判断分数score是否在90-100之间 print('考试成绩优秀') # 满足判断条件则执行该语句 elif score>=80 and score<90: # 不满足上述条件,继续判断分数是否在80—90之间 print('考试成绩良好') elif score>=70 and score<80 : # 不满足上述条件,继续判断分数是否在70—80之间 print('考试成绩中等') elif score>=60 and score<70: # 不满足上述条件,继续判断分数是否在60—70之间 print('考试成绩及格') else: # 上述条件都不满足,执行else后面的语句 print('考试成绩不及格') 3.1.6 if 语句嵌套 · 在编写程序时,可以根据实际需求选择合适的if条件分支语句。 · 简单的条件判断,可以使用if单分支语句; · 如果程序需要考虑两种条件判断的结果,使用if-else双分支语句; · 如果程序需要根据多个判断条件做出不同反应,使用if-elif-else多分支语句; · 如果程序逻辑比较复杂,可以嵌套使用 if 语句。 · 所谓if语句嵌套,是指在一个if语句内部嵌套另外一个if语句。 · 例:某血液采集中心允许献血的条件为:(1)男性体重大于50kg,年龄在18-60周岁;(2)女性体重大于45kg,年龄在18-55周岁。 · 编程分析:献血对象有男性和女性两个群体,使用if-else双分支语句把两个群体分开处理;接下来在每一个群体内部,通过嵌套if语句设置本群体的献血条件。实现的代码如下。 # 3_10_if语句嵌套使用示例.py gender = '女' weight = 55 age = 24 if gender == '女': # 判断性别gender是否为女 if weight>=45 and 18<=age<=55: # 判断体重weight和年龄age是否满足女性的献血条件 print('该女士可以献血。') else: print('该女士条件不满足,不允许献血。') else: # 性别gender为男 if weight>=50 and 18<=age<=60: # 判断体重weight和年龄age是否满足男性的献血条件 print('该男士可以献血。') else: print('该男士条件不满足,不允许献血。') 【任务3.2 while/for循环评定多个学生的奖学金】 【任务分析】 · 前述任务中,使用 if 多分支语句完成了某个学生奖学金的评定。现实生活中,可能会有多个学生参与奖学金的评定;因此,本任务中尝试评定N个学生的奖学金(N由用户从键盘输入),需要完成的具体工作内容如表所示。 3.2.1 while循环语句 · 程序设计中会遇到需要反复执行某功能(代码块)的情况。Python引入了while循环和for循环。 · while循环的基本语法格式如下: while 条件表达式: 循环体(需重复执行的代码块) · 当该条件表达式为真True(条件成立)时,执行循环体,然后重新判断条件表达式是否成立;如条件成立则再次执行循环体,直到条件表达式为假False时,不再执行循环体中的代码块、退出循环。执行流程如图所示。 · 例:使用while循环计算1—100内所有整数之和。 · 代码如下: # 3_11_while循环语句示例(1).py total=0 # 定义total变量存放累加结果,赋初始值为0 i=1 # i变量表示1到100内的数值,赋初始值为1 while i<=100: # 循环判断条件为i<=100,若条件成立,则执行下面两行代码 total=total+i # 将i累加到total中 i=i+1 # 每循环一轮,i的值都加1;然后,返回到第4行继续判断条件是否成立 print('1+2+3+...+100=',total) · 例:使用while循环计算1—100内所有整数之和。 · 引入一个标记变量flag作为执行循环的控制信号;当flag为True时,执行循环体,改写上述示例代码如下: # 3_12_while循环语句示例(2).py total=0 i=1 flag=True # 设置flag变量的取值为真 while flag: # flag取值为真时,反复执行循环体中的操作 total=total+i i=i+1 if i>100: # 当i>100时,改变flag变量的值为假,从而终止循环 flag=False print('1+2+3+...+100=',total) · 例:猜数字。预先设定一个整数数字,用户共有5次机会猜数字,猜对或猜错具有相应提示。 分析该程序的循环条件为:只有5次机会猜数字;循环体中执行以下两个操作: · (1)用户从键盘输入猜测的数字,并将字符串数字转换为整型数字。 · (2)用户输入的数字和预先设定的数字进行比较,根据不同的情况输出不同结果。 · 具体代码如下: # 3_13_while循环语句示例(3).py key = 10 # 预先设定待猜测的数字 i = 5 # 剩余的机会次数 while i>0: # 循环条件:剩余的机会大于0次 guess = int(input("请输入你猜测的数字:")) # 用户输入猜测的数字并转换为整型 if guess == key: # 判断用户输入的数字和key是否相等 print("恭喜你,答对了!") elif guess < key: print("猜小了!") else: print("猜大了!") # 用掉一次机会,i减少1 3.2.2 for循环语句 · 程序设计中会遇到需要反复执行某功能(代码块)的情况。Python引入了while循环和for循环。for 循环的基本语法格式如下: for 变量 in 可迭代对象: 循环体(需重复执行的代码块) · 所谓可迭代对象是指元素可以单独提取出来的对象,如字符串、列表、元组、字典、集合等都是可迭代对象。 · for循环每执行一轮,就从可迭代对象中读取一个元素,然后赋值给变量,进而执行循环体中的代码;直到读取完可迭代对象的所有元素为止,不再循环。 · for循环语句的循环次数是确定的。 · 运行流程如图所示: · 例:字符串“Python”是由“P”、“y”、“t”、“h”、“o”、“n”六个字符元素组成,使用for循环遍历字符串“Python”,打印其字符元素: for char in "Python": # 遍历字符串中的每一个数据元素,并赋值给变量char print(char) # 执行打印操作 · 例:列表也是可迭代对象,也可以采用类似的方法遍历列表,打印其中的元素。 >>> list1 = [1,-3,-4,7,-9,10] >>> for i in list1: # 遍历列表中的每个数据元素并赋值给变量i print(i) # 执行打印操作 · 例:在循环体中执行更复杂的操作。求列表list1的元素绝对值并打印。 # 3_14_for循环语句示例(1).py list = [1,-3,-4,7,-9,10] for i in list: # 遍历列表中的每个数据元素,并赋值给变量i if i < 0: # 判断i的取值是否为负数 i = -i # i的取值为负数则转变为正数 print(i) # 打印变量i的结果 · 例:借助for循环,求列表[1,2,3,4,5]的所有元素之和。 # 3_15_for循环语句示例(2).py total=0 # 定义存放累加结果的变量total,赋初始值为0 list = [1,2,3,4,5] for num in list: # 遍历列表中的每个数据元素,并赋值给变量num total=total+num # 累加求和 print(total) # 打印最终累加求和的结果 · 如果求“1+2+3+4+...+99+100”的值,可以借助Python内置的range()函数,快速生成一个整数序列。 >>>range(0,10) # 生成一个0到9的整数数字序列:0 1 2 3 4 5 6 7 8 9 range(0, 10) >>>range(10) # 默认情况下从0开始生成数字序列,等价于range(0, 10) range(0, 10) >>>range(5,10) # 生成一个5到9的序列:5 6 7 8 9 range(5, 10) · 对于range(m,n)函数而言,其产生的数字序列为“m,m+1,m+2,...n-2,n-1”,并不包括尾数n。 · 对于range()函数生成的序列,无法直接观察其元素;但可以将for循环语句和range()函数结合使用,遍历查看range()函数生成的数字序列,代码如下: >>>for i in range(1,5): # 遍历数字序列中的每个数据元素,并赋值给变量i print(i) # 执行打印操作 · 利用range()函数,即可完成“1+2+3+4+...+99+100”的运算。代码如下: # 3_16_for循环语句示例(3).py total=0 # 定义存放累加结果的变量total,赋初始值为0 for i in range(1,101): # 遍历1到100的数据序列 total=total+i # 累加求和 print('1+2+3+...+100=',total) · 利用for循环语句编写猜数字小游戏,规则不变。代码如下: # 3_17_for循环语句示例(4).py key = 10 # 预先设定待猜测的数字 for i in range(5): # 循环条件:i变量依次遍历数字序列0 1 2 3 4,表示共有5次猜数字机会 guess = int(input("请输入你猜测的数字:")) # 用户从键盘输入猜测的数据,并转换为整型 if guess == key: # 判断用户输入的数字和预先设定的数字是否相等 print("恭喜你,答对了!") elif guess < key: # 判断用户输入的数字是否小于预先设定的数字 print("猜小了!") else: # 用户输入的数字大于预先设定的数字,执行else后面的语句 print("猜大了!") 3.2.3 循环的嵌套 · 循环语句嵌套,即一个循环体中,包含另外一个循环。 · 例:有黄瓜、西红柿、白菜、土豆、四季豆5种蔬菜,有牛肉、猪肉、鸡肉3种肉类,任意搭配可以做出哪些一荤一素的菜肴? · 数学中的“排列组合”可以解决这一问题:首先在5种蔬菜中依次选择出一种蔬菜,接下来对于每种蔬菜,在3种肉类中依次选择出一种肉类与之匹配,如图所示: · 用Python程序模拟这一过程,需要两层循环结构。代码如下: # 3_18_循环的嵌套示例.py vegetables = ["黄瓜","西红柿","白菜","土豆","四季豆"] meat =["牛肉","猪肉","鸡肉"] for i in vegetables: # 遍历vegetables,每次取出一种蔬菜 for j in meat: # 遍历meat,每次取出一种肉类 print(i, "炒", j) 【任务3.3 循环的控制break/continue】 【任务分析】 · 在批量评审奖学金过程中,也可以评定完一名同学后,询问评审员“是否继续评定下一位?”,给予评审员更多的自主权;若评审员决定“不继续评定”,则程序停止;若评审员决定“继续评定”,则继续评审下一位同学的奖学金等级。本项任务需要完成的具体工作如表所示: · 对于 while 循环和 for 循环,在满足循环条件的情况下会重复执行循环体中的代码,直到不满足循环条件才终止。 · Python 还提供了在满足循环条件下,根据实际需要提前跳出循环的 break和 continue 语句,从而使得循环结构变得更加灵活。 3.3.1 break 语句 · 在循环执行过程中,如需要中途强行跳出并结束循环,可使用break语句。 · 例:通过循环让用户不断输入喜欢的城市名字,并打印出相关信息,直到用户输入“quit“为止。代码如下: # 3_19_循环中使用break示例(1).py while True: # 循环条件永远成立 city=input('请输入你喜欢城市名字(输入quit退出程序):') if city=='quit': # 如果用户输入“quit” break # 使用break跳出循环体 else: # 只要用户没有输入“quit”,打印相关信息,然后进入下一轮循环 print('我喜欢的城市:', city) · 使用 for 循环依次打印列表 [2,4,6,8,9,10,12] 中的元素,遇到奇数就停止打印。代码如下: # 3_20_循环中使用break示例(2).py list1 = [2,4,6,8,9,10,12] for i in list1: # 遍历列表中的每个数据元素并赋值给变量i if i % 2 != 0: # 判断变量i是否为奇数 break # 变量i为奇数则跳出循环体,不再执行剩余代码 print(i) # 变量i为偶数则执行打印操作 · 借助break语句,升级猜数字小游戏,使之更具交互性:用户每猜测一次数字,程序向用户询问是否继续(是-Y、否-N);若用户输入Y则游戏继续,否则使用break语句跳出循环体、游戏结束。 · 代码如下: # 3_21_循环中使用break示例(3).py key = 10 # 预先设定待猜测的数字 for i in range(5): # 循环条件:i变量依次遍历数字序列0 1 2 3 4,共有5次猜数字机会 guess = int(input("请输入你猜测的数字:")) if guess == key: print("恭喜你,答对了!") break #猜对的情况下,直接退出循环、游戏结束 elif guess < key: print("猜小了!") else: print("猜大了!") choice = input("请问是否需要继续游戏? 是-Y 否-N:") if choice == "Y" and i != 4: # 判断用户输入"Y" ,并且i不为4(还有竞猜机会) print("游戏继续") # if条件成立则游戏继续 else: # 不满足if条件则使用break跳出循环结构 print("退出游戏") break # 直接退出循环、游戏结束 3.3.2 continue 语句 · continue语句用于立即结束本轮循环,提前进入下一轮循环。 · 例:打印列表[2,4,6,8,9,10,12]中的所有偶数元素,选择for循环与continue语句相结合完成该任务。代码如下: # 3_22_循环中使用continue示例.py nums= [2,4,6,8,9,10,12] for i in nums: # 遍历列表中的每个数据元素并赋值给变量i if i % 2 != 0: # 判断变量i是否为奇数 continue # 变量i为奇数,则退出本轮循环,执行下轮循环 print(i) # 变量i为偶数则执行打印操作 总结评价 分支和循环改变了Python程序只能自上而下执行的逻辑,从而为解决更加复杂的问题提供了可能。在“评定奖学金”项目中,我们借助if-elif-else多分支结构,根据两门课程的成绩,完成单个同学奖学金的评定;为了应对多人奖学金评定问题,引入了while/for循环,从而使得我们能够轻松应对重复执行某些操作的问题。为了提高程序的友好性,每评定完一名学生的奖学金后,询问是否继续评定下一位;如用户不再继续评定,则使用break语句退出循环。利用好上述程序流程控制语句,我们就能够实现相对复杂的算法,为真实项目实战奠定基础。 $$

资源预览图

模块3 流程控制(教案)-《程序设计基础Python》同步教学(电子工业版)
1
模块3 流程控制(教案)-《程序设计基础Python》同步教学(电子工业版)
2
模块3 流程控制(教案)-《程序设计基础Python》同步教学(电子工业版)
3
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。