内容正文:
年级
高一
课题
2.3周而复始的循环
课时
1
教材分析
本节课是“编程计算”单元的核心内容。在此之前,学生已经学习了顺序结构和分支结构,掌握了用程序解决简单问题的基本方法。循环结构是三种程序结构中最灵活也相对较难的一种,它打破了学生“程序一条路走到黑”的思维习惯,需要建立“重复执行直到条件变化”的认知模型。本节课内容在后续学习数据处理、算法设计等章节中都有广泛应用,是培养学生计算思维的关键节点。
学情分析
授课对象为宁夏高一年级学生。通过前两节的学习,学生对Python的基本语法(变量、数据类型、输入输出、if语句)已有初步了解,能够阅读和修改简单的程序代码。但编写规范代码的能力仍然较弱,常见问题包括缩进不规范、冒号遗漏、全角半角符号混用等。此外,学生对“循环变量迭代”这一抽象过程缺乏直观感受,容易在边界条件设置上出错——比如range()函数的“左闭右开”特性,很多学生一开始理解不了为什么range(1,5)输出的是1到4而不是1到5。
教学目标
1.信息意识:能识别生活中需要重复处理的问题场景,意识到用循环结构替代重复代码是提高问题解决效率的有效途径
2.计算思维:能够将重复性任务抽象为循环结构模型,掌握for循环和while循环的语法格式,能根据问题特征选择合适的循环结构并编写程序实现
3.数字化学习与创新:在编程实践中熟练使用Python开发环境,掌握程序调试的基本方法,能利用数字化工具验证算法设计的合理性
4.信息社会责任:在程序设计中养成规范编码的习惯,理解死循环对系统资源的占用问题,树立严谨负责的技术使用态度
教学重点
· for循环的语法结构及range()函数的使用方法
· while循环的语法结构及循环条件的设置方法
· 两种循环结构的适用场景区分
教学难点
· 循环变量的迭代过程理解
· 循环条件与循环体的逻辑关系——尤其是循环体中必须有改变条件表达式值的语句,否则会形成死循环
· 根据实际问题灵活选择计数循环或条件循环
教学方法
以任务驱动法为主线,辅以对比教学法和调试纠错法。整个课堂围绕“理财计算”这一贴近学生生活的情境展开,通过三个递进的任务引导学生逐步掌握循环结构。任务设计遵循“模仿—理解—迁移”的认知规律:先让学生在模仿中感知循环语法,再在对比中理解两种循环的差异,最后在新情境中实现知识迁移
教学准备
· 教学环境:多媒体网络机房,安装Python IDLE或Thonny开发环境
· 教学资源:课件、学案(含代码填空练习)、半成品程序文件
· 数据准备:银行利率数据(参考真实银行挂牌利率,让学生感受数据的真实性)
教学过程
教师活动
学生活动
设计意图
环节一:情境导入——从重复的代码说起(6分钟)
“同学们,大家过年收过压岁钱吗?家里一般怎么处理这笔钱?”
学生七嘴八舌地回答后,教师引出话题:“存银行是比较常见的做法。假设你有5万元,存一年定期,年利率3.25%,到期自动转存,5年后本息合计是多少?”
教师在PPT上展示用顺序结构写的代码:
python
money = 50000
rate = 0.0325
money = money * (1 + rate)
money = money * (1 + rate)
money = money * (1 + rate)
money = money * (1 + rate)
money = money * (1 + rate)
print("5年后存款为:", money, "元")
“这段代码能不能算出结果?能。但如果你存20年呢?是不是要把同一行代码复制粘贴20遍?”
学生笑了,有人小声说“那也太傻了”。
“确实——这种‘重复做同一件事’的工作,人做起来又累又容易出错,但计算机最擅长。今天我们就来学习,怎么用几句话代替这几百行重复的代码。”
观察代码,理解“重复”的含义,产生学习循环结构的动机。
用压岁钱这个学生有共鸣的话题切入,直接展示重复代码带来的“笨拙感”,让学生直观感受循环结构的必要性——不是为了学语法而学,而是为了解决“写代码写到想吐”这个真实痛点
环节二:任务一——认识计数循环(12分钟)
“5年、20年这种‘我知道要循环多少次’的情况,用Python的for循环最方便。”
讲解for循环基本语法:
python
for 循环变量 in range(循环次数):
循环体
强调三个坑:冒号不能丢、缩进必须4个空格、range(n)产生的是0到n-1。
接着演示用for循环改写刚才的存款问题:
python
money = 50000
rate = 0.0325
for i in range(5):
money = money * (1 + rate)
print("5年后存款为:", money, "元")
“你看,不管存多少年,只要把range里面的数字改一下就行。计算机帮我们重复执行了5次循环体。”
在电脑上输入这段代码,运行验证结果是否与之前一致。然后尝试修改range(5)为range(10),观察输出变化。
在模仿中建立对for循环的第一印象。代码填空的方式降低了初学者的认知负担——学生不需要从零开始写,而是在理解的基础上修改和验证。
环节三:任务二——利率变化了怎么办(12分钟)
“刚才假设利率不变,但如果银行利率每年都在变呢?比如第一年3.25%,第二年3%,第三年3%,第四年2%,第五年1.75%——”
学生发现range(5)不管用了,因为每年利率不一样。
“这种情况怎么办?我们可以把利率放在一个列表里,让循环变量依次取列表中的每一个值。”
讲解列表的基本概念和for循环遍历列表的写法:
python
money = 50000
rates = [0.0325, 0.03, 0.03, 0.02, 0.0175]
for r in rates:
money = money * (1 + r)
print("5年后存款为:", money, "元")
强调两种for循环的区别:range(n)适合“我知道循环多少次”的情况,遍历列表适合“我要对一组数据逐个处理”的情况。
完成任务二——在学案上填空完成代码,运行并记录结果。小组内互相检查代码格式是否正确(缩进、冒号等)。
在任务一的基础上增加了列表这个新要素,既巩固了for循环的语法,又拓展了for循环的应用场景——它不只是用来“数数”,还可以遍历数据。同时,利率数据采用接近真实银行利率的数值,让学生感受到课堂知识并非纸上谈兵。
环节四:任务三——引入while循环(12分钟)
“继续深挖这个理财问题——如果我想知道,这笔钱存多少年才能翻倍变成10万元?也就是说,循环次数我并不知道,我只知道‘什么时候该停’。”
“这种情况,用for循环就不好办了——因为我不知道range里面该写多少。我们需要另一种循环:while循环。”
讲解while循环语法:
python
while 条件表达式:
循环体
# 必须有改变条件表达式的语句
展示核心代码:
python
money = 50000
rate = 0.0325
year = 0
while money < 100000:
money = money * (1 + rate)
year = year + 1
print("需要", year, "年才能翻倍")
重点强调:循环条件写在while后面,循环体中必须有改变条件变量的语句(这里是year = year + 1)。如果漏了这一行,money永远不会变,条件永远为真,程序会一直运行下去——这就是死循环。
让学生对比for循环和while循环:“for循环适合‘次数已知’,while循环适合‘条件控制’。以后写程序的时候,先问自己一个问题:我知道要循环多少次吗?”
在电脑上输入while循环代码,运行验证结果
故意删掉year = year + 1这一行,运行程序,观察“死循环”现象(教师提前告知如何强制停止程序:Ctrl+C)
小组讨论:生活中还有哪些“次数未知、条件控制”的场景?(密码尝试、猜数字游戏、直到输入正确为止……)
通过“翻倍需要多少年”这个新问题,自然引出while循环的必要性。让学生亲手制造一次死循环,反而能加深他们对“循环条件必须变化”的理解——有时候犯错是最好的学习方式。
环节五:课堂小结与拓展(3分钟)
用表格对比两种循环:
for 循环
while循环
适用场景
循环次数已知
循环次数未知,由条件控制
语法关键词
for ... in ...
while 条件表达式:
常见搭档
range()、列表
计数器变量
风险点
range边界写错
忘记更新条件 → 死循环
“两种循环没有谁比谁厉害——关键是选对工具。”
完成一份简单的课堂检测(2道选择题,1道填空题),提交给教师快速了解掌握情况。
用对比表格帮助学生建立清晰的知识结构,避免混淆。课堂检测用2-3分钟完成,目的是即时反馈,不是正式考试。
板
书
设
计
2.3 周而复始的循环
一、for循环——计数循环(次数已知)
for 变量 in range(n):
循环体
例:存5年定期
2、 for循环 + 列表(遍历数据)
for 变量 in 列表:
循环体
例:利率每年不同
3、 while循环——条件循环(次数未知)
while 条件表达式:
循环体
更新条件
例:存到翻倍为止
学科网(北京)股份有限公司
$