学径XUEJING · 个人学习平台通知设置

课程库 AI 主线 Python 第一步 › 第 4

条件判断 —— if/else:程序开始"思考"

普通课50 分钟

本课导读

到现在为止,你的程序都是"一条道走到黑"——每行代码必然执行。这一课给程序装上"岔路口":满足条件走这边,不满足走那边。学完本课,你能写出会看情况办事的程序,还会掌握 Python 的灵魂设定——缩进。

生活里全是 if/else

导航 App 每秒都在做这件事:如果前方拥堵,换一条路线,否则继续直行。做菜也是:尝一口,如果淡了,加盐。"根据条件选择做什么"是智能行为的基本形态——程序的写法几乎就是把这句话直译过来:

Python

拆解语法,四个要点:

  1. if 后面跟一个条件(结果是 True 或 False——上上课认识的布尔值在这里上岗了)
  2. 条件后面的冒号 : 不能丢——它是"接下来是分支内容"的信号
  3. 冒号下面的代码缩进 4 个空格,表示"属于这个分支"
  4. else: 管"否则"的情况,可以省略

temperature 改成 25 再运行,走的就是另一条岔路。

缩进:Python 的灵魂设定

别的语言用大括号圈定范围,Python 用缩进——这是它代码好读的秘诀,也是新手报错的高发区。规则其实只有一条:

同一层级的代码,缩进必须一样;进入 if/else/循环的"内部",就多缩进 4 个空格。

缩进错了,Python 会用 IndentationError 提醒你(报错三步法用起来)。试着把上面例子里 print("有点冷...") 前面的空格删掉运行——认识一下这位新朋友。

提示

实用技巧:永远用 4 个空格(本站代码块里按 Tab 键会自动帮你输入 4 个空格)。缩进不是装饰,它就是语法本身——"哪些代码属于这个分支"完全由缩进决定。

多个岔路口:elif

条件不止两种时,用 elif(else if 的缩写)搭出多级岔路:

Python

关键机制:从上往下逐个检查,命中第一个成立的条件就执行它、跳过其余全部hour = 14 时,hour < 18 成立,但前面的 hour < 12 先被检查(不成立才轮到后面)。所以 elif 的顺序很重要——条件要从"最严格"往"最宽松"排。

顺便把比较运算符凑齐:

符号含义
==等于city == "上海"
!=不等于answer != "yes"
> <大于 / 小于age > 18
>= <=大于等于 / 小于等于score >= 60

注意

最经典的错误:= 是赋值,== 才是判断相等。写 if age = 18: 会直接报语法错误。嘴里默念:一个等号"存进去",两个等号"比一比"。

组合条件:and / or / not

现实的判断常常是复合的:"周末并且天晴才去爬山"。Python 用三个英文单词直接表达:

Python
  • and:两边都成立才算成立
  • or:任何一边成立就算成立
  • not:把 True 变 False、False 变 True

一个新符号:%(求余数)

后面练习和测验要用到它,顺手学了:% 算的是除法的余数10 % 3 等于 1(10 除以 3 商 3 余 1)。它最常见的用途是判断整除——余数为 0 就是能整除:

Python

✍️ 练习

练习 1:会员折扣

商品原价 200 元。会员打 8 折,非会员原价。打印应付金额。改变 is_member 的值验证两条分支都正常。

Python
💡 提示

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 找出三个数中最大的一个并打印。

Python
💡 提示

"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 分别验证:应该是 闰年、平年、闰年。)

Python
💡 提示

把规则原样翻译: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} 是平年")

这题的价值在"把中文规则翻译成布尔表达式"——以后写数据筛选条件,做的就是同一件事。

随堂测验

随堂测验0 / 5 题正确

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 循环,计算机最擅长的领域。

划选正文任意文字可高亮、批注或加入复习卡

讨论

载入中…