Python3 条件控制
Python3 条件控制(Conditionals)
🎯 学习目标
掌握 Python 中的条件控制语句(if
, elif
, else
),理解其在程序流程控制中的作用。能够在实际项目中灵活使用条件判断进行逻辑分支处理,提升代码的逻辑清晰度与可维护性。
🔑 核心重点
分类 | 内容 |
---|---|
基本结构 | 使用 if , elif , else 控制程序执行路径 |
逻辑表达式 | 支持 and , or , not 进行复合判断 |
真值测试 | 掌握空值、布尔值、容器类型等“真假”判定规则 |
实际应用场景 | 用户输入验证、权限控制、状态判断、数据筛选等 |
性能优化技巧 | 合理组织条件顺序、避免重复判断、使用短路求值 |
📚 详细讲解
一、什么是条件控制?
条件控制是程序中最基本的流程控制结构之一。通过判断某个条件是否成立,决定执行哪一段代码。
✅ 基本语法:
if condition1:
# 条件1为 True 时执行
elif condition2:
# 条件2为 True 时执行
else:
# 所有条件都不满足时执行
📌 注意:
if
是必须的elif
可以有多个或没有else
最多只能有一个,且必须在最后
二、比较运算符
运算符 | 描述 | 示例 |
---|---|---|
== |
等于 | x == y |
!= |
不等于 | x != y |
< |
小于 | x < y |
> |
大于 | x > y |
<= |
小于等于 | x <= y |
>= |
大于等于 | x >= y |
三、逻辑运算符
用于组合多个条件判断。
运算符 | 描述 | 示例 |
---|---|---|
and |
两个条件都为真才返回真 | (x > 5) and (x < 10) |
or |
至少一个条件为真就返回真 | (x < 5) or (x > 10) |
not |
取反条件结果 | not (x == y) |
📌 短路求值:Python 在计算逻辑表达式时会进行短路判断,即只要能确定最终结果就不会继续计算后续部分。
四、真值测试(Truth Value Testing)
在 Python 中,很多对象都可以被当作布尔值使用:
类型 | 默认为 False 的情况 |
---|---|
数字 | 0 , 0.0 |
字符串 | "" |
列表 | [] |
元组 | () |
字典 | {} |
集合 | set() |
None | None |
if "":
print("This will not print")
if []:
print("This will also not print")
五、嵌套条件判断
可以在一个条件块内再写另一个 if
语句,形成嵌套结构。
age = 20
has_permission = True
if age >= 18:
if has_permission:
print("可以进入系统")
else:
print("需要管理员授权")
else:
print("未满18岁,禁止访问")
📌 建议:尽量避免过多层嵌套,可使用“提前 return”或“提取函数”来简化逻辑。
六、简洁写法(一行写完)
适用于简单判断:
x = 10
result = "偶数" if x % 2 == 0 else "奇数"
print(result)
📌 也可以结合 in
、is
等关键字:
name = input("请输入用户名:")
if name in ["admin", "root"]:
print("欢迎管理员!")
else:
print("普通用户登录")
⚠️ 注意事项
- 缩进统一使用 4 个空格(PEP8 要求)
- 条件表达式要明确,避免模糊判断(如
if x:
应说明含义) - 不要滥用嵌套,保持代码扁平化
- 对比浮点数时应使用误差范围(避免精度问题)
- 使用
elif
替代多个独立if
,提高效率和可读性
🧪 实际案例分析
📌 场景:用户登录权限判断
我们模拟一个简单的登录系统,根据用户输入的用户名和密码判断是否有权限访问。
username = input("请输入用户名:")
password = input("请输入密码:")
valid_users = {
"admin": "123456",
"user1": "pass123"
}
if username in valid_users:
if password == valid_users[username]:
print("登录成功!")
if username == "admin":
print("您拥有管理员权限。")
else:
print("您是普通用户。")
else:
print("密码错误,请重试。")
else:
print("用户名不存在。")
📌 应用:
- 登录验证系统
- 权限管理模块
- 数据过滤器
- 状态机设计
🧩 拓展练习(动手实践)
- 编写一个程序,接收用户输入的成绩(0~100),输出对应的等级(A/B/C/D/F)。
- 输入三个整数,判断它们能否构成三角形,并输出三角形类型(等边、等腰、不等边)。
- 编写一个模拟 ATM 取款程序,判断余额是否足够并提示相应操作。
- 实现一个简单的计算器,支持加减乘除,并处理除零异常。
- 设计一个菜单选择系统,根据用户输入数字执行不同功能(如查询、添加、退出)。
📚 推荐阅读
- Python 官方文档 - 控制流
- 《流畅的 Python》第 1 章 - 流程控制与函数基础
- 廖雪峰 Python 教程 - 条件判断
- 菜鸟教程 - Python 条件语句
- Real Python - Conditional Statements in Python
🧭 下一步建议
- 下一章学习内容:《Python3 循环结构详解》
- 掌握
for
和while
循环的基本用法 - 学习
break
,continue
,else
在循环中的使用 - 探索嵌套循环、迭代器与生成器
- 结合条件控制与循环知识,尝试编写复杂逻辑程序(如猜数字游戏、排序算法等)
如果你希望我为你提供:
- Python 条件控制速查表 PDF
- 更多实战项目练习题(如登录系统、成绩分类器、菜单系统等)
- 条件判断高级技巧详解(如链式判断、模式匹配、枚举判断等)
- 视频教学资源推荐(中文讲解)
欢迎随时告诉我 😊