第 4 课 / 共 9 课14 分钟2 个闯关

if / elif / else:让程序做决定

缩进在 Python 里是语法,不是排版。

让程序会做选择

到目前为止你的程序都是一条道走到黑:从上到下,每行都执行。但真实世界需要分叉——"如果下雨就带伞"。

age = int(input("你的年龄:"))

if age >= 18:
    print("可以进入")
else:
    print("未成年,不可以")

缩进就是语法

看清楚 print 前面的四个空格。在大多数语言里缩进只是好看,在 Python 里它是语法的一部分——缩进的那几行,才属于 if 管辖的范围。

if age >= 18:
    print("A")      # 属于 if,条件成立才执行
print("B")          # 不属于 if,永远执行

规矩就三条:

  1. if 那行结尾必须有冒号 :
  2. 下一行必须缩进,统一用 4 个空格(别用 Tab,别混用,否则报 IndentationError
  3. 缩进结束,这个分支就结束了

比较运算符

a == b   # 相等(两个等号!一个等号是赋值)
a != b   # 不相等
a > b    # 大于
a >= b   # 大于等于
a < b    # 小于
a <= b   # 小于等于

=== 混淆是新手第一大笔误。记法:一个等号是"放进去",两个等号是"问一句"

比较的结果是布尔值:

print(3 > 5)    # False
print(3 == 3)   # True

多个分支:elif

score = int(input("分数:"))

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("要加油了")

elif 是 else if 的缩写。关键在于从上往下依次检查,命中一个就跳出整段,后面的不再看

所以 95 分只会打印"优秀"——虽然它也 >= 80,但那一行根本没被执行到。也正因如此,顺序不能乱:如果把 >= 60 写在最前面,那所有及格的人都会被判成"及格"。

组合条件:and / or / not

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("放行")

if age < 6 or age >= 65:
    print("免票")

if not has_ticket:
    print("请先买票")
  • and:两边都成立才算成立(要求严格)
  • or:有一边成立就算成立(要求宽松)
  • not:反过来

Python 还支持一种很自然的写法:if 18 <= age < 65:,和 age >= 18 and age < 65 等价,但更好读。

10 秒自测

x = 5
if x > 3:
    print("A")
elif x > 1:
    print("B")

输出什么?答案是只有 A。x 确实也大于 1,但 elif 在前一个分支命中后就不再检查了。

广告位(未配置 AdSense,上线后在此展示)

动手闯关

读懂了不算会,写出来才算

0/2 已通过

闯关和判题完全免费,交错了不扣任何东西。卡住随时点「问 AI」,它能看到你正在写的代码。

关卡 01猜输出+10 点 · +15 XP

elif 会不会都执行

输出是什么? ```python x = 5 if x > 3: print("A") elif x > 1: print("B") ```

  • 可能是多选,选错不扣点数,随便试。
登录后闯关拿点数
关卡 02写代码+15 点 · +25 XP

成绩等级判定

读入一个 0~100 的整数分数,按规则输出等级: - 90 及以上 → `优秀` - 80 ~ 89 → `良好` - 60 ~ 79 → `及格` - 60 以下 → `不及格`

示例输入

95

应该输出

优秀
pythonTab 缩进 4 空格

学完了?标记一下

标记完成会记进度、涨 20 XP,还会点亮连续学习天数。