第五课:更多的分岔路 – if-elif-else 语句和逻辑判断

  • 时长: 90 分钟
  • 教学目标:
    • 学习 else 命令,处理条件不满足时的“否则”情况。
    • 学习 elif 命令,处理多个互斥的条件判断(“再如果”)。
    • 掌握 if-elif-else 结构的用法和执行顺序(从上到下判断,只执行第一个符合条件的)。
    • 学习 and (并且), or (或者), not (不是) 这三种逻辑连接词,用来组合更复杂的条件。
    • 能够编写程序实现多分支的选择逻辑。

课程内容

1. 复习与引入 (10 分钟)

  • 复习: 复习 if 语句和关系运算符。
  • 提出问题: 老师提问:“上一节课我们判断了及格(大于等于 60),如果及格就表扬。但如果不及格,我们什么都没做。怎么让程序在及格时打印‘及格’,否则打印‘不及格’呢?” “那怎么判断分数等级呢?如果大于等于 90 是优秀,大于等于 80 是良好,大于等于 60 是及格,否则就是不及格?”
  • 引出 elseelif: 单纯的 if 只能做“如果…就…”。为了处理“否则”的情况,我们有了 else。为了处理“再如果”多个条件的情况,我们有了 elif

2. 如果不…就… – else 语句 (15 分钟)

  • else 的作用: else 语句跟在 if 后面,当 if 的条件是 False 时,就执行 else 后面缩进的代码块。它没有自己的条件。
  • 语法:
    if 条件表达式:
        # 条件为 True 时执行
        print("条件成立")
    else:
        # 条件为 False 时执行
        # 注意:这里的代码也需要缩进!
        print("条件不成立")
    
  • 强调: else 必须和 if 配对使用,不能单独存在。 else 后面有冒号 :,代码块需要缩进。
  • 演示:
    score = 58
    
    if score >= 60:
        print("考试及格")
    else: # score >= 60 是 False,所以执行这里的代码
        print("考试不及格")
    
    print("判断结束")
    
  • 动手实践: 学生修改分数,观察 ifelse 分别在什么情况下执行。 编写程序,判断输入的数字是奇数还是偶数(用 if-else)。

3. 如果…再如果…否则… – if-elif-else 结构 (20 分钟)

  • elif 的作用: elif 是 “else if” 的缩写,用在 ifelse 之间。当 if 的条件不满足时,程序会接着判断 elif 的条件;如果 elif 的条件满足,就执行 elif 后面缩进的代码块,然后跳出整个 if-elif-else 结构。可以有多个 elif
  • 语法:
    if 条件1:
        # 条件1 为 True 时执行
    elif 条件2:
        # 条件1 为 False,且 条件2 为 True 时执行
    elif 条件3:
        # 条件1, 2 都为 False,且 条件3 为 True 时执行
    # ... 可以有更多 elif ...
    else: # else 是可选的
        # 所有上面的条件都为 False 时执行
    
  • 执行流程: 程序会从上往下依次判断条件。只要遇到第一个条件为 True 的分支,就会执行该分支的代码块,然后整个 if-elif-else 结构就结束了,后面的 elifelse 都不会再看。只有当所有 ifelif 的条件都为 False 时,才会执行 else 分支(如果 else 存在)。
  • 强调: elif 后面需要有条件表达式和冒号 :,代码块需要缩进。
  • 演示: 编写分数等级判断的程序。
    score = 75
    
    if score >= 90:
        print("成绩等级:优秀")
    elif score >= 80: # 上面的 >=90 不满足,判断这个 >=80
        print("成绩等级:良好")
    elif score >= 60: # 上面的 >=90 和 >=80 都不满足,判断这个 >=60
        print("成绩等级:及格")
    else:             # 所有上面的条件都不满足
        print("成绩等级:不及格")
    
    print("等级判断完成。")
    
  • 动手实践: 学生输入不同的分数,观察程序打印的等级,理解判断的顺序和“只执行第一个符合条件的分支”的规则。 尝试调整 elif 的顺序,比如把 >=60 放在第一个 elif 的位置,看看结果有什么不同。

4. 组合条件 – 逻辑运算符 (15 分钟)

  • 作用: 逻辑运算符用来连接或修改布尔值 (TrueFalse) 或条件表达式,形成更复杂的条件。
  • 逻辑运算符:
    • and: 并且。只有当两个条件都为 True 时,and 的结果才是 True
    • or: 或者。只要两个条件中有一个为 Trueor 的结果就是 True
    • not: 不是。把一个条件的结果反过来,TrueFalseFalseTrue
  • 演示:
    age = 15
    money = 20
    
    # and 的例子:年龄大于12 并且 钱大于10
    print(age > 12 and money > 10) # True and True -> True
    
    age = 8
    # or 的例子:年龄小于10 或者 钱大于100
    print(age < 10 or money > 100) # True or False -> True
    
    is_raining = False
    # not 的例子:不是下雨天
    print(not is_raining) # not False -> True
    
    # 可以在 if 语句中使用组合条件
    if age > 12 and money > 10:
        print("可以买电影票")
    
    if age < 10 or is_raining:
        print("待在家里比较好")
    
  • 动手实践: 学生尝试使用 and, or, not 组合不同的简单条件,预测结果并运行验证。 然后在 ifelif 后面使用这些组合条件。

5. 课堂练习 (15 分钟)

让学生独立完成以下练习:

  • 练习 1: 编写一个程序,询问用户输入一个数字,判断它是正数、负数还是零。(使用 if-elif-else)。
    # 在这里写你的代码
    num_str = input("请输入一个数字:")
    num = float(num_str)
    # TODO: 判断是正数、负数还是零
    # TODO: 打印结果
    
  • 练习 2: 编写一个程序,询问用户的用户名和密码。如果用户名是“小明”并且密码是“8888”,就打印“登录成功!”;否则打印“用户名或密码错误!”(使用 and 逻辑运算符)。
  • 练习 3: 编写一个程序,询问用户输入的数字是否能被 5 整除或者能被 3 整除(至少满足一个条件即可)。如果是,就打印“这个数能被 5 或 3 整除”。(使用 or 逻辑运算符)。

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

  • 回顾: 回顾本节课内容:elseelif 的用法,if-elif-else 的多分支选择结构和执行流程,逻辑运算符 and, or, not 及其作用。 再次强调条件判断的顺序很重要。
  • 提问:
    • if 语句后面可以没有 else 吗? elif 呢?
    • if score >= 90: print("A") elif score >= 80: print("B"),如果 score 是 95,会打印 A 还是 B?会打印 B 吗?
    • True and False 的结果是什么? True or False 呢? not True 呢?
  • 答疑: 回答学生的问题。

7. 布置课后作业 (5 分钟)

  • 作业 1: 编写一个程序,询问用户年龄,根据年龄打印不同的阶段:小于 7 岁打印“儿童”,7 到 15 岁打印“少年”,大于 15 岁打印“青年”。(年龄范围可以根据实际情况调整)。
  • 作业 2: 编写一个程序,询问用户输入一个年份,判断这个年份是否是闰年。闰年的简单判断方法是:能被 4 整除,但不能被 100 整除;或者能被 400 整除。 (提示:使用 and, or% 运算符)。
  • 作业 3: (选做) 编写一个简单的公交车票价计算程序。询问用户的年龄和是否是学生(让用户输入“是”或“否”)。票价规则:成人 2 元,学生半价(1 元),儿童(小于 6 岁)免费,6-12 岁的儿童如果不是学生也是 1 元。根据年龄和是否学生打印最终票价。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。