第 9 课多路选择:if-elif 与逻辑运算
PYTHON 基础语法 · 第 9 / 11 课

🚀 多路选择:if-elif 与逻辑运算

长链发奖品 + and/or 组合条件
🎯 会用链式比较 10 <= n <= 99🎯 会用 and(都要满足)和 or(满足一个)🎯 会写长 elif 链(分级、映射)🎯 挑战经典闰年判断
🕐 数学储备:数的大小比较、区间(已学)
课前回顾

🔄上节课我们学了啥?

① 分段计费三步法;② “满 30”= >= 30 边界要测。抢答:水费第二段的公式为什么是 3*20 + 4*(n-20)?

📖 知识讲解
🔗

链式比较:像数学一样写

数学课写“10 ≤ n ≤ 99”,Python 竟然一模一样:

10
99
两位数区域 ✅
10 ≤ n ≤ 99:两头都包含(两位数最小 10、最大 99)
💡 小贴士:别的语言要写 n>=10 and n<=99,Python 偷懒直接抄数学 —— 这就是 Python 的贴心!
📖 知识讲解 · 代码
🔗

链式比较:像数学一样写 · 代码

链式比较
n = int(input())
if 10 <= n <= 99:
    print("是两位数")
💡 小贴士:别的语言要写 n>=10 and n<=99,Python 偷懒直接抄数学 —— 这就是 Python 的贴心!
📖 知识讲解
🤝

and:两个条件都要满足

and 像“并且”:两边都是 True 结果才是 True。

条件Aand条件B结果
True🤝TrueTrue ✅
TrueFalseFalse ❌
FalseTrueFalse ❌
FalseFalseFalse ❌
💡 小贴士:“既是…又是…”用 and;“两位的偶数”= 10<=n<=99 and n%2==0。
📖 知识讲解 · 代码
🤝

and:两个条件都要满足 · 代码

and 组合
n = int(input())
if n % 3 == 0 and n % 5 == 0:   # 既能被3整除,又能被5整除
    print("欧耶欧耶")
💡 小贴士:“既是…又是…”用 and;“两位的偶数”= 10<=n<=99 and n%2==0。
📖 知识讲解
🎈

or:满足一个就行

or 像“或者”:一边是 True 结果就是 True。

💡 小贴士:“要么…要么…”用 or。and 是严格老师(全对才过关),or 是温柔老师(对一个就夸)
or 组合
fenshu = int(input())
if fenshu >= 90 or fenshu == 100:
    print("优秀")
# 只要满足其中一个条件就会执行
📖 知识讲解
🏅

长 elif 链:发奖品

条件多了,elif 一个接一个往下排,像发奖台:

💡 小贴士:顺序很关键:从高往低排!如果先判 >=60,95 分只能拿 C 了 —— 这叫“过关卡”。
elif 长链
s = int(input())
if s >= 90:
    print("A")
elif s >= 70:
    print("B")
elif s >= 60:
    print("C")
else:
    print("D")
🎯 例题精讲 · 读题
P113范围判断题库 P113
输入一个整数,如果它大于 1 并且小于 100,输出 yes;否则什么都不输出。

📥 输入:一个整数 📤 输出:满足 1<x<100 输出 yes,否则不输出

📥 输入样例
76
📤 输出样例
yes
🎯 例题精讲 · 解答
P113范围判断 · 解题

🪜 解题三步走

条件:1 < n < 100 —— 链式比较直接抄数学
用单分支 if(不输出就是没有 else)
边界想一想:1 和 100 本身算不算?题目说“大于 1 小于 100”,不算!
⚠️ 易错点:“大于 1”不含 1,链式两头都不包含!如果写成 1 <= n <= 100 就错了。
参考代码
n = int(input())
if 1 < n < 100:
    print("yes")
🎯 例题精讲 · 读题
P139成绩等级题库 P139
最经典的分级题!成绩 ≥90 是 A;≥70 且 <90 是 B;≥60 且 <70 是 C;不到 60 是 D。输入成绩输出等级。

📥 输入:一个整数(成绩) 📤 输出:输出等级 A / B / C / D

📥 输入样例
99
📤 输出样例
A
🎯 例题精讲 · 解答
P139成绩等级 · 解题

🪜 解题三步走

从高到低排 elif 链:先 >=90,再 >=70,再 >=60
95 分走到第二个关卡时已经 <90,判断 >=70 成立 → B
最后剩下的都是 <60 → else → D
⚠️ 易错点:边界归属:90→A、70→B、60→C(都是“大于等于”)。测试 90、89、70、69、60、59 六个数!
参考代码
s = int(input())
if s >= 90:
    print("A")
elif s >= 70:
    print("B")
elif s >= 60:
    print("C")
else:
    print("D")
🎯 例题精讲 · 读题
P132闰年与平年题库 P132
压轴经典 ⭐ 四年一闰、百年不闰、四百年再闰:能被 4 整除但不能被 100 整除,或者能被 400 整除,就是闰年。输入年份,输出“2020是闰年”这样的句子。🕐 整除判断(四上)

📥 输入:一个年份 📤 输出:输出“YYYY是闰年”或“YYYY是平年”

📥 输入样例
2020
📤 输出样例
2020是闰年
🎯 例题精讲 · 解答
P132闰年与平年 · 解题

🪜 解题三步走

把文字翻译成条件:y%4==0 and y%100!=0 或者 y%400==0
“并且”→ and,“或者”→ or,套上括号更清楚
输出格式:年份+是闰年(用 f-string 拼起来)
⚠️ 易错点:① ! 是“不等于”;② 括号别丢;③ 输出没有空格:2020是闰年。测试:2000✅闰、1900❌平(百年不闰!)、2024✅、2023❌
参考代码
y = int(input())
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
    print(f"{y}是闰年")
else:
    print(f"{y}是平年")
✏️ 随堂练习
✏️ P124 年龄段判断

输入年龄(0~25):0~3 输出 infant;4~12 输出 child;13~18 输出 youngster;19~25 输出 youth。

💡 提示(先自己想,再点开)
四段用 elif 链,从低到高或从高到低排都行,注意边界 3、12、18 归属(几岁算 infant 的上限?3 岁包含在内)。
🔓 点开看参考答案
n = int(input())
if n <= 3:
    print("infant")
elif n <= 12:
    print("child")
elif n <= 18:
    print("youngster")
else:
    print("youth")
✏️ 随堂练习
✏️ P797 上什么课

晶晶周一上游泳 swim、周三上编程 program、周五上阅读 read、周六上数学 math,其余休息 rest。输入星期几(1~7),输出课程。

💡 提示(先自己想,再点开)
四种情况 + 其他 → 4 个 elif 加 else。判断星期几等于某数用 ==。
🔓 点开看参考答案
n = int(input())
if n == 1:
    print("swim")
elif n == 3:
    print("program")
elif n == 5:
    print("read")
elif n == 6:
    print("math")
else:
    print("rest")
🕵️ 小侦探找错

🕵️ 小侦探找错

闰年判断:1900 年是闰年吗?
不是,1900 能被 100 整除但不能被 400 整除
是,1900 能被 4 整除
是,所有整百年都是闰年
不是,1900 是平年因为不能被 4 整除
🌟 课堂小结
🎵 链式比较照数学抄,and 全真 or 一真;
elif 长链高到低,进门就不再回头(and 严格老师全对才过,or 温柔老师对一个就夸)
  • 10 <= n <= 99 链式比较,Python 特有
  • and 两边都成立才成立;or 一边成立就成立
  • elif 链从高到低排,边界归属想清楚
  • 编号→名称的映射题:一串 elif ==
  • 闰年:(y%4==0 and y%100!=0) or y%400==0
📚 课后作业 · 到 CodingMAX 提交
难度题号题目考点提示
必做P113范围判断链式比较
必做P116适合晨练25≤t≤30
必做P117判断是否为两位数10≤n≤99
必做P124年龄段判断四段 elif
必做P139成绩等级elif 链经典
巩固P121定制毕业服五段 S~XXL
巩固P797上什么课映射
巩固P140王宅六味报菜名映射
巩固P629小明暑假的零花钱按成绩给倍数
挑战P132闰年与平年and/or 复合条件
挑战P792是否含有数字5'5' in str(n) 的 Python 魔法
挑战P241蜗牛字母大写怪兽 ord、小写怪兽 upper
挑战P790是两位的偶数吗链式+and

✅ 按题号到题库提交,提交前先对照样例自己测一遍!

🥚 编程彩蛋

🥚 地球的“零头” 🌍

为什么会有闰年?地球绕太阳一圈其实是 365.2422 天 —— 多出 0.2422 的“零头”!4 年攒出约 1 天(2 月 29 日),但每 100 年又多修了一点,每 400 年再补回来。
所以 2000 年是闰年、1900 年不是 —— 程序员用 and/or 把天文学装进了一行代码!