Python: 条件判断

上一课我们学会了如何用布尔逻辑做"是非判断",这一课就来学条件判断——让程序根据不同的条件执行不同的代码。这是所有编程语言中最核心的控制结构之一。


1. if 语句:最简单的条件判断

if 的格式很简单:

TEXT 📖 仅展示
if 条件:
    条件成立时执行的代码

注意冒号 :缩进(通常 4 个空格)——缩进告诉 Python 哪些代码属于这个 if

PYTHON
age = 18
if age >= 18:
    print("你已经成年了!")
    print("这条也是 if 内部的。")

print("这条在 if 外面,不管条件如何都会执行。")

运行结果:

TEXT 📖 仅展示
你已经成年了!
这条也是 if 内部的。
这条在 if 外面,不管条件如何都会执行。
💡 提示:Python 用缩进来表示代码块(其他语言用 {})。同一个 if 块里的代码缩进必须一致。如果你用过 C 或 Java,一开始会不习惯,但写多了你会发现:Python 强迫你写出整洁的代码。

▶ 示例:及格判断(难度⭐)

PYTHON
score = 75

if score >= 60:
    print("恭喜,及格了!")
    print(f"你的成绩是 {score} 分。")

print("成绩已记录。")
▶ 试一试

运行结果:

TEXT 📖 仅展示
恭喜,及格了!
你的成绩是 75 分。
成绩已记录。


2. if-else:二选一

当条件成立时做一件事,不成立时做另一件事:

TEXT 📖 仅展示
if 条件:
    条件成立时执行
else:
    条件不成立时执行
PYTHON
score = 45

if score >= 60:
    print("及格了!")
else:
    print("不及格,需要补考。")

运行结果:

TEXT 📖 仅展示
不及格,需要补考。

(1) if 和 else 的缩进

PYTHON
password = "123456"

if password == "123456":
    print("密码正确,欢迎回来!")
else:
    print("密码错误,请重试。")
    print('如果是忘记密码,请点击"找回密码"。')
⚠️ 注意else 后面也有冒号 :,而且 else 必须和对应的 if 对齐(同一个缩进级别)。



3. if-elif-else:多选一

现实中往往不止两种情况。用 elif(就是 else if 的缩写)可以处理多个条件分支:

TEXT 📖 仅展示
if 条件1:
    条件1成立时执行
elif 条件2:
    条件2成立时执行
elif 条件3:
    条件3成立时执行
else:
    所有条件都不成立时执行

Python 会从上到下依次检查,遇到第一个成立的条件就执行对应的代码块,然后跳出整个 if-elif-else 结构,不再检查后面的条件。

PYTHON
score = 85

if score >= 90:
    print("优秀!")
elif score >= 80:
    print("良好!")
elif score >= 70:
    print("中等。")
elif score >= 60:
    print("及格。")
else:
    print("不及格,需要补考。")

# 输出:良好!
💡 提示:注意条件顺序。如果写成 if score >= 60: 在最前面,那 85 分就会进入"及格"分支,永远不会到达"良好"和"优秀"。更严格的条件要写在前面

▶ 示例:餐厅点餐系统(难度⭐⭐)

PYTHON
print("=== 今日套餐 ===")
print("1. 红烧牛肉面   ¥28")
print("2. 鱼香肉丝饭   ¥22")
print("3. 西红柿炒蛋饭 ¥18")
print("4. 蛋炒饭       ¥12")

choice = 3

if choice == 1:
    print("您点了红烧牛肉面,共 28 元。")
elif choice == 2:
    print("您点了鱼香肉丝饭,共 22 元。")
elif choice == 3:
    print("您点了西红柿炒蛋饭,共 18 元。")
elif choice == 4:
    print("您点了蛋炒饭,共 12 元。")
else:
    print("抱歉,没有这个选项。")

print("祝您用餐愉快!")
▶ 试一试

运行结果:

TEXT 📖 仅展示
=== 今日套餐 ===
1. 红烧牛肉面   ¥28
2. 鱼香肉丝饭   ¥22
3. 西红柿炒蛋饭 ¥18
4. 蛋炒饭       ¥12
您点了西红柿炒蛋饭,共 18 元。
祝您用餐愉快!


4. 嵌套条件

条件里面还可以套条件。这叫做嵌套(nesting)。

PYTHON
age = 20
has_ticket = True

if age >= 18:
    print("已成年,可以进入。")
    if has_ticket:
        print("有票,请入场。")
    else:
        print("请先购票。")
else:
    print("未成年,禁止进入。")

运行结果:

TEXT 📖 仅展示
已成年,可以进入。
有票,请入场。

(1) 嵌套的层级不要太深

嵌套本身没问题,但嵌套超过 3 层代码就很难读了。下面的代码虽然功能正确,但看起来像一团乱麻:

PYTHON
# ❌ 不推荐:嵌套太深
user_input = "y"
is_admin = True
has_permission = True

if user_input == "y":
    if is_admin:
        if has_permission:
            print("操作成功!")
        else:
            print("没有权限。")
    else:
        print("不是管理员。")
else:
    print("操作已取消。")

可以用逻辑运算符把它展平:

PYTHON
# ✅ 推荐:用 and 减少嵌套
user_input = "y"
is_admin = True
has_permission = True

if user_input != "y":
    print("操作已取消。")
elif is_admin and has_permission:
    print("操作成功!")
else:
    print("权限不足。")
💡 提示:一个实用的经验法则——如果嵌套超过 3 层,就可以考虑用 and/or 合并条件,或者把深层逻辑提取成函数。好的代码是"平的",不是"深的"。

▶ 示例:计算运费(难度⭐⭐)

PYTHON
# 根据地区、重量和会员等级计算运费
region = "国内"     # "国内" 或 "国外"
weight = 3.5        # 公斤
is_vip = False

if region == "国内":
    if weight <= 1:
        shipping = 10
    elif weight <= 5:
        shipping = 15
    else:
        shipping = 20
else:
    if weight <= 1:
        shipping = 50
    elif weight <= 5:
        shipping = 80
    else:
        shipping = 120

# 会员打 8 折
if is_vip:
    shipping *= 0.8

print(f"地区:{region}")
print(f"重量:{weight}kg")
print(f"运费:{shipping:.0f} 元")
▶ 试一试

运行结果:

TEXT 📖 仅展示
地区:国内
重量:3.5kg
运费:15 元


5. 三元表达式(条件表达式)

Python 有一种一行写完 if-else 的写法,叫做三元表达式:

PYTHON
# 常规写法
age = 20
if age >= 18:
    status = "成年"
else:
    status = "未成年"

# 三元表达式写法(一行搞定)
status = "成年" if age >= 18 else "未成年"

print(status)   # 成年

它的结构是:

TEXT 📖 仅展示
值1 if 条件 else 值2

条件为真时取值1,为假时取值2。

(1) 实际应用

PYTHON
# 根据分数输出评语
score = 88
result = "及格" if score >= 60 else "不及格"
print(f"考试结果:{result}")   # 考试结果:及格

# 查找默认值
name = input("请输入你的名字:") or "游客"
greeting = f"你好,{name}" if name else "你好,游客"
print(greeting)
⚠️ 注意:三元表达式虽然简洁,但不要滥用。如果判断逻辑复杂(比如需要 elif),或者分支较长,还是用常规的 if-elif-else 更清晰。简洁 ≠ 可读



6. pass:什么都不做

有时候你需要一个代码块的"占位符"——语法上需要写代码,但你还没想好具体写什么。这时候用 pass

PYTHON
age = 20
if age >= 18:
    pass    # TODO:以后加上成年人的逻辑
else:
    print("未成年,不能注册。")

pass 就是"这里啥也不干,继续往下走"的意思。它经常用于:

TEXT 📖 仅展示
# 在实际开发中,你可能这样用
if user_age >= 18:
    register_user()      # 直接注册
else:
    pass                 # 暂时不对未成年做特殊处理
💡 提示:如果你用 VS Code,可以在 pass 的位置写个 # TODO 注释,VS Code 会帮你整理所有的待办事项,方便以后回来处理。



7. 常见应用场景


❓ 常见问题

Q elifif 有什么区别?为什么不能全用 if
A elifif 最大的区别是:elif 是在前面的条件不满足时才检查,而独立的 if 不管前面有没有成立都会检查。如果你写三个独立的 if,在分数 85 时"优秀"、"良好"、"中等"三个 if 全都会执行;如果用 if-elif-elif,只会执行第一个满足条件的"良好"分支。需要"多选一"时用 elif,需要"独立判断多个条件"时用多个 if
Q passreturn 有什么区别?
A pass 是"什么都不做,继续往下执行";return 是"立即结束当前函数,返回一个值"(后面会学)。在 if 块里放 pass,程序会跳过这个块继续执行后面的代码。在函数里放 return,程序会立刻跳出函数并返回结果。它们是完全不同的概念。

📖 小节


📝 作业

  1. 基础题(难度⭐):写一个判断奇偶数的程序。输入一个整数,如果是奇数输出"奇数",如果是偶数输出"偶数"。提示n % 2 == 0 是偶数。

  2. 进阶题(难度⭐⭐):写一个"基于 BMI 的健康评估程序"。输入体重(kg)和身高(m),计算 BMI,然后输出:

    • BMI < 18.5 → "偏瘦"
    • 18.5 ≤ BMI < 24 → "正常"
    • 24 ≤ BMI < 28 → "偏胖"
    • BMI ≥ 28 → "肥胖"
  3. 挑战题(难度⭐⭐⭐):写一个"简单计算器"。程序接收三个输入:第一个数字、运算符(+ - * /)、第二个数字。根据运算符执行对应的运算并输出结果。需要注意:

    • 如果运算符是 / 且第二个数字为 0,输出"除数不能为 0"
    • 如果运算符不是 + - * / 中的任何一个,输出"无效运算符"
    • 其他情况正常输出计算结果
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏