教案:复合条件判断 – 奇偶性与范围判断
教案基本信息
课程名称:Python编程第五课 复合条件判断 – 奇偶性与范围判断
授课对象:编程零基础初学者
课时安排:45分钟
教学形式:理论讲解 + 实践操作
一、 教学目标
知识与技能:
- 数学知识: 巩固数的奇偶性、正负性概念,理解数值区间的数学表示(如 1 ≤ x ≤ 10)。
- 编程知识:掌握逻辑运算符 and(与)、or(或)、not(非)的含义和使用。能够运用逻辑运算符将多个简单条件组合成复合条件。编写程序判断复杂的条件,如”是否既是正数又是偶数”、”是否在某个区间内”。
过程与方法:
- 学习将复杂的自然语言描述(如”大于10且小于20″)分解为程序可理解的复合逻辑条件。
- 通过解决多条件判断问题,培养逻辑分析和问题分解的能力。
情感态度与价值观:
- 体会编程逻辑的严谨性与强大功能,增强学习信心。
- 认识到现实生活中很多决策都是基于多个条件的综合判断。
二、 教学重点与难点
教学重点:逻辑运算符and,or,not的用法和逻辑含义;复合条件在if语句中的书写。
教学难点:理解不同逻辑运算符的优先级;准确地将复杂的自然语言条件转化为正确的复合逻辑表达式。
三、 教学准备
教师:安装Python环境的电脑、投影设备、教学课件。
学生:电脑已安装Python环境,已掌握 if-elif-else 基础和关系运算符。
四、 教学过程
(一) 复习导入(5分钟)
教师活动:
- 快速提问:”如何用程序判断一个数是正数?””如何判断奇偶数?”(学生回答,使用 if number > 0 和 if number % 2 == 0)。
- 提出新挑战:”如果我们想判断一个数是否既是正数又是偶数,该怎么办?难道要写两个嵌套的 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 | 条件B | A and B |
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
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 | 条件B | A or B |
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
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分钟)
小结:
- and(与):两边都为真,结果才为真。用于条件必须同时满足。
- or(或):一边为真,结果就为真。用于条件满足一个即可。
- not(非):对条件取反。范围判断:x在[a, b] 等价于 x >= a and x <= b。
- 优先级:not > and > or,不确定时用括号 () 最安全。
作业:
- 基础题:编写程序,判断用户输入的年份是否是闰年。闰年规则:能被4整除但不能被100整除,或者能被400整除。
- 挑战题:编写一个”三角形判断”程序。输入三条边的长度,判断它们是否能构成三角形(任意两边之和大于第三边),如果能,再判断是等边、等腰还是普通三角形。
五、 板书设计
主标题: 复合条件判断 – 逻辑运算符
核心知识点:
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: