第七课:有条件的重复 – 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 循环:适合循环次数不确定,只知道循环什么时候应该停止(当某个条件满足时)的情况。
  • 示例:forwhile 分别打印 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) # 只有偶数才会打印这句
      
  • 动手实践: 学生修改示例代码,尝试在不同的条件和位置使用 breakcontinue,观察程序的输出和执行流程。

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 语句和 continuebreak
  • 练习 3: 编写一个程序,使用 while True 循环,不断询问用户输入一个正数,直到用户输入的是一个两位数(大于等于 10 小于等于 99)时停止。然后打印用户输入的这个两位数。

6. 总结与提问 (10 分钟)

  • 回顾: 回顾本节课内容:while 循环的语法和执行流程(条件为真时重复),while 循环中更新条件变量以避免死循环的重要性,for 循环和 while 循环的区别和适用场景,break (终止循环) 和 continue (跳过本次循环)。
  • 提问:
    • 当你知道要重复 10 次时,通常用 for 还是 while
    • 当你想让程序一直运行直到用户输入“quit”时停止,用 for 还是 while 更方便?
    • while num < 10: 循环里,如果一直没有代码改变 num 的值,会发生什么?
    • breakcontinue 有什么不同?
  • 答疑: 回答学生问题。

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 退出。查询余额和存款操作可以简单模拟。取款时要判断余额是否足够。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。