教案:while循环与循环控制
教案基本信息
课程名称:Python编程第八课 while循环与循环控制
授课对象:编程零基础初学者
课时安排:45分钟
教学形式:理论讲解 + 实践操作
一、 教学目标
知识与技能:
- 编程知识:理解while循环的语法和执行逻辑,掌握其与for循环的区别。掌握循环控制语句break(终止循环)和continue(跳过本次循环)的用法。能够使用while循环解决“满足特定条件时重复执行”的问题。
- 数学知识: 通过高斯求和等案例,巩固数列求和的知识。
过程与方法:
- 通过对比for循环和while循环,理解两种循环结构的适用场景。
- 经历“问题分析-算法设计-代码实现-调试优化”的完整编程过程。
情感态度与价值观:
- 体会不同编程结构解决同一问题的多样性,培养灵活解决问题的能力。
- 培养严谨的逻辑思维,理解循环控制对程序流程的重要性。
二、 教学重点与难点
教学重点: while循环的语法和执行流程;break和continue的作用。
教学难点: 准确设置while循环的条件,避免死循环;在合适的场景下使用break和continue。
三、 教学准备
教师: 安装Python环境的电脑、投影设备、教学课件。
学生: 电脑已安装Python环境,已掌握for循环和if语句。
四、 教学过程
(一) 复习导入:for循环的局限性(5分钟)
教师活动:
- 复习for循环:“上节课我们使用for i in range(1, 101)来计算1到100的和。for循环非常适合在循环次数明确的情况下使用。”
- 提出新问题:“但如果遇到循环次数不明确的情况呢?比如:”
“让用户输入密码,直到输入正确为止。”
“生成随机数,直到生成一个大于0.9的数。”
“计算一项投资需要多少年才能翻倍。”
引出主题:“这些问题的共同点是:只要条件满足,就继续循环。这时,while循环就派上用场了!”
设计意图: 从已知引出未知,通过对比强调while循环的独特应用场景。
(二) 新知探究:while循环(15分钟)
1. while循环的基本语法
语法(板书):
python
while 条件:
# 循环体(条件为True时重复执行)
执行流程比喻: 就像“当…时候,就一直做…”。例如:“当锅里的水没开时,就一直烧火。”
示例1:打印1-5
python
count = 1 # 1. 初始化计数器
while count <= 5: # 2. 循环条件
print(count)
count = count + 1 # 3. 改变条件变量(非常重要!)
print(“循环结束”)
关键强调:
循环三要素:
初始化 (count = 1)
条件判断 (count <= 5)
更新条件变量 (count = count + 1) → 缺少这一步会导致死循环!
与for循环对比:for循环自动处理计数器的初始化和更新,while循环需要手动管理。
2. 经典案例:高斯求和(1到100的和)
用while实现:
python
total = 0 # 累加和
i = 1 # 从1开始
while i <= 100: # 循环条件:i小于等于100
total = total + i # 累加
i = i + 1 # i增加1
print(“1到100的和是:”, total)
引导学生思考: 这个实现与for循环版本相比,哪个更简洁?(for循环更简洁)但while循环更能体现“只要i还没超过100,就继续加”的逻辑。
(三) 难点突破:循环控制break与continue(15分钟)
1. break语句:立刻终止整个循环
作用: 就像循环里的“紧急刹车”,一旦执行,立即跳出当前所在的最内层循环。
示例:密码验证
python
correct_password = “123456”
while True: # 条件永远为True,看似是死循环
user_input = input(“请输入密码: “)
if user_input == correct_password:
print(“密码正确,欢迎!”)
break # 密码正确,用break跳出循环
else:
print(“密码错误,请重新输入!”)
# break后会执行到这里
print(“程序继续…”)
讲解: while True:会创建一个无限循环,break是退出循环的唯一方式。
2. continue语句:跳过本次循环的剩余代码
作用: 就像循环里的“跳过”按钮,立刻开始下一轮循环。
示例:打印10以内的奇数
python
num = 0
while num < 10:
num = num + 1
if num % 2 == 0: # 如果是偶数
continue # 跳过下面的print,直接开始下一轮
print(num) # 只有奇数才会执行到这里
# 输出:1 3 5 7 9
对比break: break是“结束循环”,continue是“跳过本次,继续下次”。
(四) 综合应用:复杂条件循环(10分钟)
案例:猜数字游戏
需求: 程序随机生成一个1-100的数字,用户有5次机会猜测,每次提示“大了”或“小了”,猜对或次数用完则结束。
代码实现:
python
import random # 导入随机数模块
secret = random.randint(1, 100) # 生成1-100的随机整数
guesses_left = 5 # 剩余猜测次数
while guesses_left > 0:
guess = int(input(f”请猜一个1-100的数字(还剩{guesses_left}次机会): “))
if guess == secret:
print(“恭喜你,猜对了!”)
break # 猜对了,提前结束循环
elif guess > secret:
print(“猜大了!”)
else:
print(“猜小了!”)
guesses_left = guesses_left – 1 # 消耗一次机会
else: # while循环的else子句:当循环正常结束(非break退出)时执行
print(f”机会用完了,答案是{secret}。游戏结束。”)
讲解要点:
- while条件与机会次数关联。
- 使用break在猜对时提前退出。
- 介绍while-else结构:循环正常结束(条件变为False)时执行else块。
(五) 课堂练习与巩固(10分钟)
练习1:输入验证
任务:编写程序,要求用户必须输入一个正数,如果输入错误就提示重新输入,直到输入正确为止。
参考代码:
python
while True:
num = float(input(“请输入一个正数: “))
if num > 0:
print(f”你输入的正数是:{num}”)
break
else:
print(“输入错误,请重新输入!”)
练习2:投资翻倍计算
任务:假设年化收益率为5%,计算初始投资需要多少年才能翻倍。
参考代码:
python
money = 10000 # 初始本金
target = money * 2 # 目标金额
years = 0 # 年数
while money < target:
money = money * 1.05 # 每年增长5%
years = years + 1
print(f”第{years}年,资产为:{money:.2f}元”)
print(f”需要{years}年资产可以翻倍。”)
(六) 课堂小结与作业(5分钟)
小结:
- while循环:用于循环次数不确定,但循环条件明确的场景。牢记循环三要素。
- break:立即终止循环。
- continue:跳过本次循环,进入下一次。
- 选择原则:循环次数明确用for,循环条件明确用while。
作业:
- 基础题: 编写程序,计算所有100以内能被3整除但不能被5整除的数字之和。
- 挑战题: 编写一个简单的银行ATM登录模拟程序。用户有3次输入密码的机会,密码正确则显示“登录成功”,错误则提示剩余次数。3次都错误则显示“账户已锁定”。
五、 板书设计
主标题:while循环与循环控制
while循环语法:
python
while 条件:
循环体
循环三要素:
- 初始化条件变量
- 设置循环条件
- 更新条件变量
循环控制:
break:终止循环
continue:跳过本次
范例:
python
# 密码验证
while True:
if 条件:
break
# 高斯求和
while i <= 100:
total += i
i += 1