课程库 › AI 主线 › Python 第一步 › 第 4 课
条件判断 —— if/else:程序开始"思考"
普通课约 50 分钟
本课导读
到现在为止,你的程序都是"一条道走到黑"——每行代码必然执行。这一课给程序装上"岔路口":满足条件走这边,不满足走那边。学完本课,你能写出会看情况办事的程序,还会掌握 Python 的灵魂设定——缩进。
生活里全是 if/else
导航 App 每秒都在做这件事:如果前方拥堵,就换一条路线,否则继续直行。做菜也是:尝一口,如果淡了,就加盐。"根据条件选择做什么"是智能行为的基本形态——程序的写法几乎就是把这句话直译过来:
拆解语法,四个要点:
if后面跟一个条件(结果是 True 或 False——上上课认识的布尔值在这里上岗了)- 条件后面的冒号
:不能丢——它是"接下来是分支内容"的信号 - 冒号下面的代码缩进 4 个空格,表示"属于这个分支"
else:管"否则"的情况,可以省略
把 temperature 改成 25 再运行,走的就是另一条岔路。
缩进:Python 的灵魂设定
别的语言用大括号圈定范围,Python 用缩进——这是它代码好读的秘诀,也是新手报错的高发区。规则其实只有一条:
同一层级的代码,缩进必须一样;进入 if/else/循环的"内部",就多缩进 4 个空格。
缩进错了,Python 会用 IndentationError 提醒你(报错三步法用起来)。试着把上面例子里 print("有点冷...") 前面的空格删掉运行——认识一下这位新朋友。
提示
实用技巧:永远用 4 个空格(本站代码块里按 Tab 键会自动帮你输入 4 个空格)。缩进不是装饰,它就是语法本身——"哪些代码属于这个分支"完全由缩进决定。
多个岔路口:elif
条件不止两种时,用 elif(else if 的缩写)搭出多级岔路:
关键机制:从上往下逐个检查,命中第一个成立的条件就执行它、跳过其余全部。hour = 14 时,hour < 18 成立,但前面的 hour < 12 先被检查(不成立才轮到后面)。所以 elif 的顺序很重要——条件要从"最严格"往"最宽松"排。
顺便把比较运算符凑齐:
| 符号 | 含义 | 例 |
|---|---|---|
== | 等于 | city == "上海" |
!= | 不等于 | answer != "yes" |
> < | 大于 / 小于 | age > 18 |
>= <= | 大于等于 / 小于等于 | score >= 60 |
注意
最经典的错误:= 是赋值,== 才是判断相等。写 if age = 18: 会直接报语法错误。嘴里默念:一个等号"存进去",两个等号"比一比"。
组合条件:and / or / not
现实的判断常常是复合的:"周末并且天晴才去爬山"。Python 用三个英文单词直接表达:
and:两边都成立才算成立or:任何一边成立就算成立not:把 True 变 False、False 变 True
一个新符号:%(求余数)
后面练习和测验要用到它,顺手学了:% 算的是除法的余数。10 % 3 等于 1(10 除以 3 商 3 余 1)。它最常见的用途是判断整除——余数为 0 就是能整除:
✍️ 练习
练习 1:会员折扣
商品原价 200 元。会员打 8 折,非会员原价。打印应付金额。改变 is_member 的值验证两条分支都正常。
💡 提示
if/else 两条分支,各自算出金额(打 8 折就是 price * 0.8),也可以在分支里只决定折扣、最后统一打印。
✅ 参考答案
price = 200
is_member = True
if is_member:
pay = price * 0.8
else:
pay = price
print(f"应付 {pay} 元")
注意 if is_member: 不用写成 if is_member == True:——它本身就是布尔值,直接当条件用,更地道。
练习 2:三个数找最大
不用任何没学过的函数,用 if/elif/else 和 and 找出三个数中最大的一个并打印。
💡 提示
"a 最大"意味着 a >= b and a >= c。三种情况,正好 if / elif / else 各管一个。
✅ 参考答案
a = 3
b = 7
c = 5
if a >= b and a >= c:
print(f"最大的是 a:{a}")
elif b >= c:
print(f"最大的是 b:{b}")
else:
print(f"最大的是 c:{c}")
到了 elif 那一步,说明 a 已经不是最大了,所以只需比较 b 和 c——这就是"命中即跳过"机制帮你省下的逻辑。
练习 3:闰年判断(挑战)
规则:能被 4 整除且不能被 100 整除的年份是闰年;或者能被 400 整除的也是闰年。判断 year 是否闰年。(用 2024、1900、2000 分别验证:应该是 闰年、平年、闰年。)
💡 提示
把规则原样翻译:year % 4 == 0 and year % 100 != 0 or year % 400 == 0。and 比 or 先结合,正好符合规则的语义。
✅ 参考答案
year = 2024
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(f"{year} 是闰年")
else:
print(f"{year} 是平年")
这题的价值在"把中文规则翻译成布尔表达式"——以后写数据筛选条件,做的就是同一件事。
随堂测验
1. if age = 18: 这行代码的问题是?
2. Python 中缩进的作用是?
3. score 为 85 时,下面的 if score >= 60: print("及格") elif score >= 80: print("优秀") 输出什么?
4. 10 % 4 的结果是?
5. is_vip = False,weather = "晴"。条件 is_vip or weather == "晴" 的结果是?
本课小结
if 条件:+ 缩进的分支内容;elif搭多级岔路,命中即跳过;else兜底- 缩进是语法:同层对齐,进分支加 4 空格;
=存进去,==比一比 and/or/not组合条件;%求余数,余 0 即整除- 把中文规则翻译成条件表达式,是一项越练越值钱的能力
下一课让程序做重复的事——for 循环,计算机最擅长的领域。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…