首页 / 专栏 / python / python教程:条件控制深入全面讲解

python教程:条件控制深入全面讲解

  • 发布时间: 2026-03-12 08:49:48
  • 相关标签: python if 条件语句
  • 简介: 条件控制是编程中最基础也最重要的逻辑之一,它让程序能够根据不同的条件执行不同的代码分支。Python 中的条件控制主要通过 `if`、`elif`、`else` 实现,同时还包含三元表达式、条件判断的高级用法等。

一、基础语法与核心概念

1. 基本结构

Python 条件控制的核心语法结构如下,注意缩进(通常 4 个空格)是 Python 区分代码块的唯一方式,这一点和其他语言(如 Java/C++ 的大括号)不同。

单分支(if)

# 语法:if 条件表达式: 执行代码块
age = 18
if age >= 18:
    print("你已成年")  # 条件为 True 时执行

双分支(if-else)

# 语法:if 条件: 代码块1 else: 代码块2
score = 59
if score >= 60:
    print("考试及格")
else:
    print("考试不及格")  # 条件为 False 时执行

多分支(if-elif-else)

# 语法:if 条件1: 代码块1 elif 条件2: 代码块2 ... else: 代码块N
score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")  # 仅当条件1为False、条件2为True时执行
elif score >= 60:
    print("及格")
else:
    print("不及格")  # 所有条件都不满足时执行

2. 条件表达式的规则

条件表达式最终必须返回 TrueFalse,常见形式:

  • 比较运算符:==(等于)、!=(不等于)、><>=<=
  • 逻辑运算符:and(与)、or(或)、not(非)
  • 成员运算符:in(存在)、not in(不存在)
  • 身份运算符:is(内存地址相同)、is not(内存地址不同)

示例:

# 组合条件判断
name = "Python"
score = 95
if name == "Python" and score > 90:
    print("符合优秀标准")

# 成员判断
fruits = ["apple", "banana"]
if "apple" in fruits:
    print("苹果在列表中")

# 身份判断(注意:小整数/短字符串有缓存,is 和 == 结果可能一致)
a = 10
b = 10
print(a is b)  # True(小整数缓存)
c = [1,2,3]
d = [1,2,3]
print(c is d)  # False(列表是可变对象,内存地址不同)

二、进阶用法

1. 三元表达式(简洁版 if-else)

当逻辑简单时,可用三元表达式简化代码,语法:值1 if 条件 else 值2

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

# 三元表达式等价写法
status = "成年" if age >= 18 else "未成年"
print(status)  # 输出:成年

2. 嵌套条件控制

条件控制可以嵌套(一个 if 里再写 if),但建议嵌套层级不超过 2 层,否则代码可读性差。

score = 85
if score >= 60:
    print("及格")
    if score >= 80:
        print("且成绩良好")
        if score >= 90:
            print("甚至优秀")
else:
    print("不及格")

3. 条件判断中的“真值”与“假值”

Python 中,除了 False,以下值也会被判定为“假”(False):

  • 数值:0、0.0、0j(复数)
  • 空序列:""(空字符串)、[](空列表)、()(空元组)、{}(空字典)、set()(空集合)
  • None

其他值均为“真”(True),利用这一点可简化条件判断:

# 常规写法:判断列表是否非空
nums = [1,2,3]
if len(nums) > 0:
    print("列表非空")

# 简化写法:直接判断列表本身
if nums:
    print("列表非空")

# 判断字符串是否为空
s = ""
if not s:
    print("字符串为空")

4. 多个条件的优雅写法

当需要判断“值是否在多个选项中”,用 in 替代多个 or,代码更简洁:

# 繁琐写法
fruit = "apple"
if fruit == "apple" or fruit == "banana" or fruit == "orange":
    print("常见水果")

# 优雅写法
if fruit in ["apple", "banana", "orange"]:
    print("常见水果")

三、常见坑与最佳实践

1. 常见错误

  • 缩进错误:忘记缩进或缩进不一致(如混用空格和制表符),会报 IndentationError
  • 冒号遗漏:if/elif/else 行末尾必须加 :,否则报 SyntaxError
  • 混淆 ==== 是赋值,== 是判断相等,新手易写错:
    # 错误示例
    if age = 18:  # 报错:赋值语句不能出现在条件中
        print("成年")
    
  • 多分支的条件顺序elif 是按顺序判断的,前面的条件会覆盖后面的,需注意条件的合理性:
    # 错误示例:永远不会执行到 "良好" 分支
    score = 85
    if score >= 60:
        print("及格")
    elif score >= 80:
        print("良好")  # 因为 85 >=60 先满足,此分支不会执行
    

2. 最佳实践

  • 条件表达式尽量简洁,复杂条件可拆成变量:
    # 复杂条件
    if (score >= 60 and score <= 100) and (subject == "math" or subject == "english"):
        print("有效成绩")
    
    # 优化:拆成变量
    is_valid_score = 60 <= score <= 100
    is_main_subject = subject in ["math", "english"]
    if is_valid_score and is_main_subject:
        print("有效成绩")
    
  • 避免过深的嵌套(建议 ≤2 层),可通过提前 return/函数拆分优化。
  • 优先使用 in/not in 替代多个 or 判断。

四、实战示例

示例1:判断闰年

year = 2024
# 闰年规则:能被4整除但不能被100整除,或能被400整除
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year}年是闰年")
else:
    print(f"{year}年不是闰年")

示例2:用户登录验证

username = input("请输入用户名:")
password = input("请输入密码:")

# 模拟验证逻辑
if username == "admin" and password == "123456":
    print("登录成功")
elif username == "admin" and password != "123456":
    print("密码错误")
else:
    print("用户名不存在")

总结

  1. Python 条件控制核心是 if-elif-else缩进是区分代码块的关键,条件行末尾必须加 :
  2. 条件表达式可使用比较/逻辑/成员/身份运算符,也可利用“真值/假值”简化判断(如 if list: 判断列表非空)。
  3. 进阶用法包括三元表达式、嵌套条件(慎用)、多条件 in 优化,需注意避免缩进错误、==/= 混淆等常见问题。

同分类推荐