第七课:有条件的重复 – while 循环与循环控制
- 时长: 90 分钟
- 教学目标:
- 学习另一种循环结构
while
循环,它根据一个条件的真假来决定是否重复。 - 理解
for
循环和while
循环的区别以及各自适合解决的问题。 - 掌握在
while
循环内部更新条件,避免程序“死循环”。 - 学习
break
命令,用来随时跳出循环。 - 学习
continue
命令,用来跳过本次循环,进入下一次。 - 通过练习巩固对两种循环和循环控制语句的理解。
- 学习另一种循环结构
课程内容
1. 复习与引入 (10 分钟)
- 复习: 复习
for
循环和range()
的用法。 - 提出问题: 老师提问:“
for
循环很适合知道要重复多少次或者要遍历一个序列的时候。但如果我不知道要重复多少次,只是想‘一直重复,直到某个条件满足才停’,怎么办?比如一个猜数字游戏,要一直让用户猜,直到猜对了才结束,我不知道用户要猜多少次才能对。” - 引出
while
循环: 这时候就需要while
循环了。while
循环的意思是“当某个条件成立的时候,就一直重复做…”。用烧水(水没开就一直烧)、玩游戏(直到过关)等例子来比喻while
循环。
2. 当条件为真时重复 – while 循环 (20 分钟)
while
的作用:while
循环会在每次执行循环体之前,先检查条件表达式。如果条件为True
,就执行缩进的代码块(循环体);执行完循环体后,再回到开头检查条件,如果条件仍然为True
,就继续执行循环体… 这样一直重复,直到条件变为False
。- 语法:
while 条件表达式: # 循环体:当条件表达式为 True 时重复执行 # 注意:这里的代码需要缩进! print("条件为真,继续循环") # !! 重要的步骤:在这里改变影响条件表达式的变量,让条件有机会变为 False !!
- 重点强调 – 避免死循环: 如果
while
后面的条件表达式永远为True
,那么循环就会一直执行下去,停不下来!这叫做死循环。所以,在while
循环体内部,必须要有改变条件表达式相关的变量的代码,让条件有机会变成False
。 - 演示:
- 使用
while
循环实现一个计数器(类似for range
),并展示如何更新计数变量。count = 0 # 初始化计数变量 while count < 5: # 条件:count 小于 5 print("当前的 count 是:", count) count = count + 1 # 更新条件变量:每次循环让 count 加 1 print("while 循环结束。")
- 演示一个简单的死循环(例如
while True: print("我不会停!")
),并告诉学生如何按Ctrl + C
来强制停止程序。
- 使用
- 动手实践: 学生尝试编写一个
while
循环,从 10 倒数到 1。 尝试写一个简单的死循环并学会停止它。
3. for 和 while,选哪个? (10 分钟)
- 对比:
for
循环:适合已知要重复多少次,或者要遍历一个集合(字符串、列表、range() 序列等)的情况。while
循环:适合循环次数不确定,只知道循环什么时候应该停止(当某个条件满足时)的情况。
- 示例: 用
for
和while
分别打印 1 到 5,让学生感受两种写法的不同。# 用 for 打印 1 到 5 print("用 for 循环:") for i in range(1, 6): print(i) # 用 while 打印 1 到 5 print("用 while 循环:") count = 1 while count <= 5: print(count) count = count + 1
- 讨论: 哪些问题用
for
更方便?哪些问题用while
更灵活?(比如用户输入直到符合要求,游戏主循环等)
4. 控制循环 – break 和 continue (15 分钟)
break
的作用:break
命令可以立即跳出(终止)当前所在的整个循环(无论是for
还是while
),然后接着执行循环后面的第一条语句。continue
的作用:continue
命令会跳过本次循环中continue
后面还没执行的代码,直接进入下一次循环的开始。对于while
循环,会回到开头重新检查条件;对于for
循环,会直接取序列中的下一个元素。- 演示:
- 在
for
循环中使用break
,当循环变量等于某个值时提前退出。print("--- break 示例 ---") for i in range(10): if i == 5: print("遇到 5 了,跳出循环") break # 跳出 for 循环 print("当前的数字:", i) print("循环后面的代码")
- 在
for
循环中使用continue
,跳过某些情况。print("--- continue 示例 ---") for i in range(10): if i % 2 != 0: # 如果是奇数 print("跳过奇数:", i) continue # 跳过本次循环,不打印下面的语句 print("当前的偶数:", i) # 只有偶数才会打印这句
- 在
- 动手实践: 学生修改示例代码,尝试在不同的条件和位置使用
break
和continue
,观察程序的输出和执行流程。
5. 课堂练习 (15 分钟)
让学生独立完成以下练习:
- 练习 1: 编写一个程序,使用
while
循环实现简单的猜数字游戏。程序随机生成一个 1 到 10 之间的数字(或者老师提前设定一个),让用户输入数字猜测。如果没猜对,提示用户“猜大了”或“猜小了”;如果猜对了,打印“恭喜你,猜对了!”并结束循环。# 在这里写你的代码 secret_number = 7 # 秘密数字 guess = 0 # 初始化猜测值 while guess != secret_number: guess_str = input("请猜一个 1 到 10 的数字:") guess = int(guess_str) # 转换为整数 # TODO: 使用 if 判断 guess 和 secret_number 的大小关系 # TODO: 根据判断结果打印“猜大了”或“猜小了” # 猜对的条件是 while 的结束条件,不用在 if 里写 break print("恭喜你,猜对了!") # 循环结束后打印
- 练习 2: 编写一个程序,使用
for
循环打印 1 到 30 的数字。但要求:- 如果数字能被 5 整除,就跳过本次循环(不打印)。
- 如果数字是 25,就立即停止循环。
- 打印其他数字。
(提示:结合if
语句和continue
、break
)
- 练习 3: 编写一个程序,使用
while True
循环,不断询问用户输入一个正数,直到用户输入的是一个两位数(大于等于 10 小于等于 99)时停止。然后打印用户输入的这个两位数。
6. 总结与提问 (10 分钟)
- 回顾: 回顾本节课内容:
while
循环的语法和执行流程(条件为真时重复),while
循环中更新条件变量以避免死循环的重要性,for
循环和while
循环的区别和适用场景,break
(终止循环) 和continue
(跳过本次循环)。 - 提问:
- 当你知道要重复 10 次时,通常用
for
还是while
? - 当你想让程序一直运行直到用户输入“quit”时停止,用
for
还是while
更方便? - 在
while num < 10:
循环里,如果一直没有代码改变num
的值,会发生什么? break
和continue
有什么不同?
- 当你知道要重复 10 次时,通常用
- 答疑: 回答学生问题。
7. 布置课后作业 (5 分钟)
- 作业 1: 编写一个程序,使用
while
循环计算并打印从 1 加到 50 的和。 - 作业 2: 编写一个程序,使用
for
循环打印 1 到 100 的数字,但只打印其中能被 7 整除的数字。 - 作业 3: 编写一个程序,使用
while
循环,模拟用户登录尝试:程序设定正确的用户名(例如“admin”)和密码(例如“123456”)。让用户最多尝试 3 次输入用户名和密码。如果在 3 次内输入正确,打印“登录成功”并退出循环;如果 3 次都输入错误,打印“登录失败,请稍后再试”。(提示:需要一个计数器来记录尝试次数,使用break
在成功时退出循环)。 - 作业 4: (选做) 编写一个程序,使用
while True
循环模拟银行取款机:提供选择 (1. 查询余额 2. 取款 3. 存款 0. 退出)。让用户输入编号进行操作,直到用户输入 0 退出。查询余额和存款操作可以简单模拟。取款时要判断余额是否足够。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)