第二讲 循环结构 教学设计-《Python 结构化程序设计调试》

2025-03-11
| 14页
| 225人阅读
| 1人下载
精品

内容正文:

安徽省计算机类高考技能教学 循环结构 目录 安徽省计算机类高考技能教学 1 一、教学目标 1 【知识目标】 1 【能力目标】 1 【素养目标】 2 二、基本知识讲解 2 什么是循环结构 2 for循环 2 while循环 7 循环结构的嵌套 9 循环控制语句 10 一、教学目标 【知识目标】 1.理解for循环结构的执行流程; 2.掌握for循环结构语句的语法结构; 3.简单for循环结构的简单应用。 4.理解while循环的执行流程; 5.掌握while循环语句的语法结构; 6.区分for循环与while循环。 7.理解循环嵌套结构的执行流程; 8.掌握循环嵌套结构语句的语法结构; 9.简单掌握循环嵌套结构的简单应用。 10.理解break、continue、pass语句的作用 11.掌握break、continue的使用 【能力目标】 培养学生循环结束语句的应用。 【素养目标】 培养在解决实际问题中,合理使用for与while循环解决实际问题。 二、基本知识讲解 什么是循环结构 在实际应用中,经常需要周而复始地做某一件事。针对此类问题,在Python中可以编写循环结构的程序来解决此类问题。 循环结构是控制一个语句块重复执行的程序结构,由循环条件和循环体两部分组成,循环结构的特点是:在一定条件下重复执行某些语句,直至重复到一定次数或该条件不再成立为止。 for循环 在Python中for循环常用于遍历字符串、列表、元组、字典、集合等序列类型。逐个获取序列中的各个元素,迭代变量用于存放从序列中逐个取出的元素,所以一般不会在循环中对迭代变量手动赋值。每条for语句后需要一个冒号“:”,表示紧跟着的是执行循环的语句块。 for循环结构流程图: for循环结构语法: for 迭代变量 in 字符串|列表|元组|字典|集合: 语句块 在for循环中可用内置函数range()方便快捷的生成一个整数序列。Python中range()函数格式说明如下: range(start,stop[,step]) 参数说明: start:计数从start开始,默认是从0开始,如range(4)等价于range(0,4)。 stop:计数到stop结束,但并不包括stop.如range(0,4)是包含数字[0,1,2,3],并没有4. step:步长,默认为1。如range(0,4)等价于range(0,4,1) 使用range()函数进行10s-1s的倒计时: import time for i in range(10,0,-1): time.sleep(1) print(i) range对象是不可变的序列类型 列表推导式【列表解析】 可以通过列表推导式快速高效的创建新的列表.有两种语法格式: [表达式 for 迭代变量 in 可迭代对象] [表达式 for 迭代变量 in 可迭代对象 if 条件表达式] [表达式 for 迭代变量 in 可迭代对象 for 迭代变量 in 可迭代对象] 嵌套循环 lst = [i % j for i in range(1, 3) for j in range(1, 4)] print(lst) 上面的代码等价于下面的代码: lst=[] for i in range(1, 3): for j in range(1, 4): lst.append(i%j) print(lst) 举例:随机生成5个10-30之间的整数,存放于列表中 import random lst=[random.randint(10,30) for i in range(5)] print(lst) 举例:随机生成5个10-30之间的互不相同的整数,存放于列表中 # 方法1 import random lst=[i for i in range(10,31)] print(random.sample(lst,5)) # 方法2 import random count=0 # 计数 lst=[] while True: num = random.randint(10,30) if num not in lst: lst.append(num) count+=1 if count==5: break print(lst) 举例:随机生成5个10-30之间的偶数,存放于列表中 import random lst=[random.randrange(10,31,2) for i in range(5)] print(lst) 举例:列出1-10所有数字的平方 lst = [i ** 2 for i in range(1, 11)] print(lst) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 举例:列出1-10中能被2整除的数的平方 lst = [i ** 2 for i in range(1, 11) if i % 2 == 0] print(lst) 除了列表推导式,还有集合推导式,字典推导式。没有元组推导式 dict1 = {i: i ** 2 for i in range(1, 5)} print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16} 举例:将字典的键和值互换 # 方法1: dict1 = {0: 'red', 1: 'green', 2: 'blue'} dict2 = {v: k for k, v in dict1.items()} print(dict2) # 方法2: dict1 = {0: 'red', 1: 'green', 2: 'blue'} dict2={} for i in dict1: dict2[dict1[i]]=i print(dict2) 举例:计算1-15的累加和 s = 0 for i in range(1, 16): s += i print("1至15的累加和为:", s) 举例:输入15位同学的成绩,计算出平均分。运行结果如下: s = 0 for i in range(1, 6): score = eval(input(f"请输入第{i}位同学的成绩:")) s += score print("这十五位同学的平均分为:", s / 15) 举例:键盘输入一个自然数,判断是否为素数(只能被1和它本身整除)2是最小的素数。 # 方法1: num = int(input("请输入一个自然数:")) flag = True # 默认是素数 if num >= 2: for i in range(2, num): if num % i == 0: flag = False break if flag: print("{}是素数".format(num)) else: print("{}不是素数".format(num)) else: print("请输入正确的自然数!") # 优化上述的算法 # 方法2: import math # 数学库 num = int(input("请输入一个自然数:")) flag = True # 默认是素数 if num >= 2: for i in range(2, int(math.sqrt(num)) + 1): # int(num**0.5)+1 if num % i == 0: flag = False break if flag: print("{}是素数".format(num)) else: print("{}不是素数".format(num)) else: print("请输入正确的自然数!") while循环 Python中,while循环执行顺序为:判断条件为True,执行语句块1,直到条件为False时退出循环,执行else子句的语句块2(else子句可以省略)。while循环结构流程图如图所示: 根据上述流程对应的语句格式如下: While 表达式: 语句块1 [else: 语句块2] 举例:使用while循环语句来计算整数1到10的和 s = 0 i = 1 # 初始值 while i <= 10: s += i i += 1 # i变量的值加1 print(s) 举例:随机生成1-20之间的数字num,然后从键盘输入数字,如果输入的数字大于num,则输出“猜的数字偏大”如果输入的数字小于num,输出“猜的数字偏小”。猜对数字,则输出“恭喜,猜对啦!”并且退出循环。 import random # 导入随机数模块 num = random.randint(1, 20) # 生成1-100之间的随机整数 t = eval(input("请输入你要猜的数字(1-20):")) while t != num: if t > num: print("猜的数字偏大") if t < num: print("猜的数字偏小") t = eval(input("请输入你要猜的数字(1-20):")) print("恭喜,猜对啦!") 举例:简易加法计算器,实现连续输入数字相加求和,直到输入字母‘q’时显示相加结果。运行结果如图3-3-9所示: s=0 i=1 while True: num=input(f"请输入第{i}个数字:") if num=='q': break s+=int(num) i+=1 print("程序结束") print("相加结果为:%.1f"%s) 循环结构的嵌套 一个循环体里面嵌套另外一个循环体时,称之为“循环嵌套”。for语句和while语句循环嵌套语法格式如下: for 变量1 in 遍历序列1: for 变量2 in 遍历序列2: 语句块2 语句块1 while 条件表达式1: while条件表达式2: 语句块2 语句块1 当然可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环,可以在for循环中嵌入while循环。 举例:使用for循环结构打印一个由10行星号组成的直角三角形。运行结果如下: for i in range(1, 10): for j in range(1, i + 1): print("*", end="") print() 举例:九九乘法表,运行结果如下所示: for i in range(1, 10): for j in range(1, i + 1): print(f"{j}*{i}={j * i}", end="\t") print() 循环控制语句 break break语句:用在while和for循环中,通常与if语句一起使用,可以用来跳出当前所在的循环结构,即使循环还在执行,也会立即停止执行的循环语句,跳出循环体(如果有else子句,则不会执行),继续执行循环下面的语句。 for 循环变量 in 序列对象: 语句块(循环体) [else: 语句块] 如果for和while循环里面的语句块有break子句,且执行了break语句那么else里面的子句不会执行。 举例:使用while循环语句和break来求100以内的累加和 i = 1 s = 0 while True: if i == 101: break s += i i += 1 print(s) 举例:键盘输入自然数,判断素数。要求:要用到break num = eval(input("请输入自然数(n>=2):")) if num>=2: for i in range(2,num): if num%i==0: print(f"{num}不是素数") break else: print(f"{num}是素数") else: print(f"{num}不是素数") 举例:从键盘连续输入数字进行累加,直到输入-1表示退出累加,输出累加和。 s = 0 while True: num = int(input("请输入数字(-1退出累加):")) if num == -1: break s += num print("累加和:", s) continue continue用于跳过本次循环,continue也是用在while和for循环中,通常也是与if语句一起使用,但是与break有所不同,continue语句用来跳过当前循环的剩余语句,然后继续执行下一轮循环,而break语句则是用于停止本层的整个循环。 展示continue与break的区别: for i in range(1, 10): if i == 5: continue print(i) for i in range(1, 10): if i == 5: break print(i) 举例:输出1~80之间不能被5整除的整数,运行结果如下: for i in range(1, 81): if i % 5 == 0: print() continue print(str(i), end="\t") pass 为了保持程序结构的完整性,Python提供了一个空语句pass,pass语句一般仅作为占位语句(占位符),不做任何事。 三、例题讲解 1.评委打分:输入评委数量,若评委人数小于等于3个人。则直接计算平均分。若大于3人,则先去除最高分或最低分。再计算平均分。(保留小数点后1位) n=int(input("请输入评委的人数:")) lst=[] for i in range(1,n+1): lst.append(eval(input(f"请输入第{i}位评委的分数:"))) if n<=3: avg=sum(lst)/len(lst) else: lst.sort() lst.pop(0) # 删除最低分 lst.pop() # 删除最高分 avg=sum(lst)/len(lst) print("平均分:%.1f"%avg) 2.lst=[5,1,2,3,8,13,3,4,7,8,6,9,5,6]去除lst里面重复的元素且不改变元素原来的相对位置 nlst=[] lst=[5,1,2,3,8,13,3,4,7,8,6,9,5,6] for i in lst: if i not in nlst: nlst.append(i) print(nlst) 3.随机生成10个1-100之间的整数放入列表lst,再将里面能被3或7整除的数去除 import random lst=[random.randint(1,100) for i in range(10)] print(lst) for i in lst: if i%3==0 or i%7==0: lst.remove(i) print(lst) 4.使用列表推导式生成1-100之间能被7或8整除的数的平方,最后再求列表的累加和 lst = [i**2 for i in range(1,101) if i%7==0 or i%8==0] print(sum(lst)) 5.判断素数 素数:只能被1和它的本身整除 2是最小的素数 num=int(input("请输入整数:")) flag=True # 默认是素数 for i in range(2,num): if num%i==0: flag=False break if flag: print(f'{num}是素数') else: print(f'{num}不是素数') 6.键盘连续输入数字进行累加,直到输入-1表示退出累加,输出累加和。 s=0 while True: num=eval(input("请输入数字:")) if num==-1: break s+=num print(s) 7.使用while循环计算1-2+3-4+5-6+....+99-100的累加和 s=0 flag=1 i=1 while i<=100: s+=i*flag flag*=-1 i+=1 print(s) 四、课堂小结 循环结构是考试的重点,必考的部分。理解循环的执行流程: for循环: 从序列中取出一个元素,赋值给变量。 执行循环体代码。 重复上述步骤,直到序列中的元素被遍历完。 while循环: 检查条件是否为真。 如果为真,执行循环体代码。 重复上述步骤,直到条件为假。 学好循环结构,还需要同学们多加练习和理解。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第二讲 循环结构 教学设计-《Python 结构化程序设计调试》
1
第二讲 循环结构 教学设计-《Python 结构化程序设计调试》
2
第二讲 循环结构 教学设计-《Python 结构化程序设计调试》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。