飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

if-else 语句

当程序需要在两种互斥的情况中做出选择时,if-else 结构提供了清晰的二选一逻辑:条件为真执行 A,否则执行 B。这种非此即彼的判断是实际编程中最常见的模式之一。

基本结构

if-else 在 if 的基础上增加了 else 子句,else 后面同样跟冒号,其代码块在 if 条件为假时执行:

age = 17

if age >= 18:
    print("可以进入网吧")
else:
    print("未满 18 岁,禁止进入")

程序先判断 age >= 18,由于 17 不满足该条件,整个 if 代码块被跳过,转而执行 else 下方的代码块。if 和 else 的代码块必须保持各自的缩进一致,且两者处于同一逻辑层级。

二选一逻辑的本质

if-else 保证了两条分支中有且仅有一条会被执行。这种互斥性让它特别适合处理对立状态:

score = 58

if score >= 60:
    status = "及格"
else:
    status = "不及格"

print(f"成绩状态:{status}")

无论 score 取何值,status 只会被赋值一次,不会出现两条分支都执行或都不执行的情况。

嵌套 if-else

当判断条件具有层次性时,可以在 if 或 else 代码块内部再嵌入新的 if-else,形成嵌套结构:

is_member = True
purchase_amount = 150

if is_member:
    if purchase_amount >= 100:
        discount = 0.8
    else:
        discount = 0.9
else:
    if purchase_amount >= 200:
        discount = 0.95
    else:
        discount = 1.0

print(f"折扣率:{discount}")

上面的代码先区分会员与非会员,再在各自身份下根据消费金额决定折扣。嵌套层级越深,代码可读性越差,因此当嵌套超过两层时,通常应考虑用 elif 或提前返回等方式重构。

扁平化嵌套

通过逻辑组合,很多嵌套 if-else 可以改写为单层结构:

# 嵌套写法
if x > 0:
    if y > 0:
        print("第一象限")
    else:
        print("第四象限")
else:
    if y > 0:
        print("第二象限")
    else:
        print("第三象限")

# 扁平化写法
if x > 0 and y > 0:
    print("第一象限")
elif x > 0 and y <= 0:
    print("第四象限")
elif x <= 0 and y > 0:
    print("第二象限")
else:
    print("第三象限")

扁平化后的代码虽然条件表达式更长,但结构更清晰,减少了缩进层级。

多条件二选一

有时两种分支各自需要判断多个条件,可以用逻辑运算符整合:

username = "admin"
password = "123456"

if username == "admin" and password == "secret":
    print("登录成功")
else:
    print("用户名或密码错误")

注意 else 只对应紧邻的 if,如果需要区分"用户名错误"和"密码错误",则应拆分为更多分支或使用 elif。

else 的省略与保留

else 是可选的。如果假分支不需要任何操作,完全可以不写:

value = 10
if value < 0:
    value = 0  # 负数归零
# 非负数无需处理,直接继续
print(value)

但在某些场景下,显式写出 else 反而有助于表达意图,即使它里面是 pass:

if user.is_active:
    send_email(user)
else:
    pass  # 静默跳过非活跃用户,逻辑意图明确

边界情况

if-else 处理的是布尔判断,边界值尤其需要仔细测试:

threshold = 60
score = 60

if score >= threshold:
    print("及格")
else:
    print("不及格")

当 score 恰好等于 60 时,条件为真,输出"及格"。如果需求是"严格大于",条件应写为 score > threshold。边界值的选取直接决定程序行为的正确性。

与条件表达式的关系

对于简单的变量赋值类二选一,Python 提供了更紧凑的条件表达式(三元运算符):

age = 20
status = "成年" if age >= 18 else "未成年"

条件表达式适合嵌入到表达式上下文中,而 if-else 语句更适合包含多条语句的复杂分支。两者功能有重叠,但适用场景不同,条件表达式将在独立文档中详细讨论。

if-else 语句是构建程序决策能力的基础构件,掌握其嵌套规则和扁平化技巧,能够写出既正确又易读的条件逻辑。

上一页
if 语句
下一页
if-elif-else 语句