教案:复合条件判断 – 奇偶性与范围判断

教案基本信息

课程名称:Python编程第五课 复合条件判断 – 奇偶性与范围判断
授课对象:编程零基础初学者
课时安排:45分钟
教学形式:理论讲解 + 实践操作

一、 教学目标

知识与技能:

  1. 数学知识: 巩固数的奇偶性、正负性概念,理解数值区间的数学表示(如 1 ≤ x ≤ 10)。
  2. 编程知识:掌握逻辑运算符 and(与)、or(或)、not(非)的含义和使用。能够运用逻辑运算符将多个简单条件组合成复合条件。编写程序判断复杂的条件,如”是否既是正数又是偶数”、”是否在某个区间内”。

过程与方法:

  1. 学习将复杂的自然语言描述(如”大于10且小于20″)分解为程序可理解的复合逻辑条件。
  2. 通过解决多条件判断问题,培养逻辑分析和问题分解的能力。

情感态度与价值观:

  1. 体会编程逻辑的严谨性与强大功能,增强学习信心。
  2. 认识到现实生活中很多决策都是基于多个条件的综合判断。

二、 教学重点与难点

教学重点:逻辑运算符and,or,not的用法和逻辑含义;复合条件在if语句中的书写。

教学难点:理解不同逻辑运算符的优先级;准确地将复杂的自然语言条件转化为正确的复合逻辑表达式。

三、 教学准备

教师:安装Python环境的电脑、投影设备、教学课件。

学生:电脑已安装Python环境,已掌握 if-elif-else 基础和关系运算符。

四、 教学过程

(一) 复习导入(5分钟)

教师活动:

  1. 快速提问:”如何用程序判断一个数是正数?””如何判断奇偶数?”(学生回答,使用 if number > 0 和 if number % 2 == 0)。
  2. 提出新挑战:”如果我们想判断一个数是否既是正数又是偶数,该怎么办?难道要写两个嵌套的 if 语句吗?有没有更简洁的方法?”

学生活动:思考如何解决这个新问题。

设计意图:在旧知上设置新障碍,引出本节课的核心需求——组合多个条件,激发求知欲。

(二) 新知探究:逻辑运算符(20分钟)

1. 逻辑运算符 and(与)

教师讲解:and 就像汉语里的”并且”。只有当两边的条件都为 True 时,整个 and 表达式的结果才是 True。

生活化举例:“周末并且天气好,我们就去公园。” 两个条件必须同时满足。

代码演示:

python

# 判断一个数是否既是正数又是偶数

number = int(input(“请输入一个整数: “)) # 奇偶性针对整数

if number > 0 and number % 2 == 0: # 关键代码!两个条件用and连接

    print(f”{number} 是一个正偶数。”)

else:

    print(f”{number} 不是一个正偶数。”)

真值表讲解(简要):

条件A条件BA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

2. 逻辑运算符 or(或)

教师讲解:or 就像汉语里的”或者”。只要两边的条件有一个为 True,整个or表达式的结果就是True。

生活化举例:期末考试或者平时成绩优秀,就能获得奖学金。满足一个即可。

代码演示:

python

# 判断一个数是否是负数或奇数

number = int(input(“请输入一个整数: “))

if number < 0 or number % 2 != 0: # 满足负数 或 奇数 任意一个条件即可

    print(f”{number} 是负数或奇数。”)

else:

    print(f”{number} 既不是负数也不是奇数(即它是正偶数)。”)

真值表讲解(简要):

条件A条件BA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

3. 逻辑运算符not(非)

教师讲解:not表示”取反”。它把 True 变成 False,把 False 变成 True。

代码演示:

python

number = 5

print(not number > 0) # 输出 False,因为 number>0 是True,取反后是False

# 判断一个数是否不是正数

if not (number > 0):

    print(“这个数不是正数。”)

else:

    print(“这个数是正数。”)

(三) 范例讲解:范围判断(10分钟)

问题:判断一个数x是否在区间[10, 20]内(即10 ≤ x ≤ 20)。

错误写法分析:if 10 <= x <= 20: 在数学上正确,在Python中也支持这种链式比较,但本节课为了学习逻辑运算符,我们将其拆解。

正确思路:这个条件等价于 “x ≥ 10 并且 x ≤ 20″。

代码实现:

python

# 范例:判断一个数是否在10到20之间(包含10和20)

x = float(input(“请输入一个数: “))

if x >= 10 and x <= 20:

    print(f”{x} 在10到20的区间内。”)

else:

    print(f”{x} 不在10到20的区间内。”)

拓展:判断不在区间内

方法一:使用not对整个条件取反。if not (x >= 10 and x <= 20):

方法二(德摩根定律):“不在[10,20]区间” 等价于 “x < 10  x > 20″。

python

# 判断一个数是否不在10到20之间

if x < 10 or x > 20: # 推荐使用这种方法,更直观

    print(f”{x} 不在10到20的区间内。”)

(四) 课堂练习与巩固(10分钟)

练习1:VIP资格判断

任务:某活动的VIP资格要求是:年龄在18岁以上(包含18) 是付费会员。编写程序,根据用户输入的年龄和是否付费会员(用1表示是,0表示否),判断其是否有VIP资格。

参考代码:

python

age = int(input(“请输入你的年龄: “))

is_member = int(input(“是否是付费会员?(1/是, 0/否): “))

if age >= 18 and is_member == 1:

    print(“恭喜你,拥有VIP资格!”)

else:

    print(“抱歉,你不具备VIP资格。”)

练习2:奖学金申请条件

任务:申请奖学金的条件是:成绩平均分高于90分,或者 是班干部 成绩平均分高于85分。编写程序进行判断。

提示:注意条件的组合,and 的优先级高于 or,可以使用括号 () 来明确优先级:(score > 90) or (is_cadre == 1 and score > 85)。

参考代码片段:

python

score = float(input(“请输入你的平均分: “))

is_cadre = int(input(“是否是班干部?(1/是, 0/否): “))

if score > 90 or (is_cadre == 1 and score > 85):

    print(“符合奖学金申请条件。”)

else:

    # …

(五) 课堂小结与作业(5分钟)

小结:

  1. and(与):两边都为真,结果才为真。用于条件必须同时满足
  2. or(或):一边为真,结果就为真。用于条件满足一个即可
  3. not(非):对条件取反。范围判断:x在[a, b] 等价于 x >= a and x <= b。
  4. 优先级:not > and > or,不确定时用括号 () 最安全。

作业:

  1. 基础题:编写程序,判断用户输入的年份是否是闰年。闰年规则:能被4整除但不能被100整除,或者能被400整除。
  2. 挑战题:编写一个”三角形判断”程序。输入三条边的长度,判断它们是否能构成三角形(任意两边之和大于第三边),如果能,再判断是等边、等腰还是普通三角形。

五、 板书设计

主标题: 复合条件判断 – 逻辑运算符

核心知识点:

and(与):严格,全真为真。条件1 and 条件2

or(或):宽松,一真即真。条件1 or 条件2

not(非):取反。not 条件

范围判断:a <= x <= b 或 x >= a and x <= b

范例:

python

# 是否是正偶数

if num > 0 and num % 2 == 0:

# 是否在区间内

if x >= 10 and x <= 20:

# 是否不在区间内

if x < 10 or x > 20:

您可能还喜欢...