Python 条件判断详解:语法、逻辑与实战示例
条件判断是编程中的核心逻辑之一,用于根据 “条件是否成立” 执行不同代码块。Python 中通过 if、elif、else 关键字实现条件判断,语法简洁且逻辑清晰。本文从 “基础语法→多条件判断→嵌套判断→实战场景” 四个维度,系统讲解 Python 条件判断的使用方法,帮你掌握不同场景下的逻辑编写技巧。
基础语法:if 语句(单条件判断)
if 是 Python 条件判断的基础,用于判断 “一个条件” 是否成立:若条件为 True(真),执行缩进的代码块;若为 False(假),则跳过该代码块。
1. 语法格式
1 2 3 4 5 6
| if 条件表达式: 代码语句1 代码语句2
后续代码
|
关键说明:
- 条件表达式:结果必须是 “布尔值”(True或False),常见形式包括:
- 比较运算(
>、<、==、!=、>=、<=);
- 逻辑运算(
and、or、not);
- 成员运算(
in、not in);
- 身份运算(
is、is not)。
- 冒号(
:):if 语句结尾必须加冒号,用于标记 “代码块的开始”。
- 缩进:Python 通过缩进区分代码块(推荐 4 个空格),缩进不一致会报错(
IndentationError)。
2. 示例:判断数字大小
1 2 3 4 5 6 7
| age = 18
if age >= 18: print("已成年,可独立办理业务") print("判断结束")
|
运行结果:
若将 age 改为 16,运行结果会变为:
双向判断:if-else 语句(二选一逻辑)
当需要 “条件成立执行 A 代码,不成立执行 B 代码” 时,使用 if-else 语句(二选一逻辑,必执行其中一个代码块)。
1. 语法格式
1 2 3 4 5 6 7 8
| if 条件表达式: 代码语句1 else: 代码语句2
后续代码
|
2. 示例:判断登录密码
1 2 3 4 5 6 7 8 9 10 11
| correct_password = "python123"
user_input = input("请输入密码:")
if user_input == correct_password: print("密码正确,登录成功!") else: print("密码错误,请重新输入!")
|
运行结果(输入正确时):
1 2
| 请输入密码:python123 密码正确,登录成功!
|
运行结果(输入错误时):
1 2
| 请输入密码:123456 密码错误,请重新输入!
|
多条件判断:if-elif-else 语句(多选一逻辑)
当需要判断 “多个条件”(且条件有优先级)时,使用 if-elif-else 语句:按顺序判断条件,只要有一个条件成立,就执行对应分支并跳过后续判断;若所有条件都不成立,执行 else 分支(else 可选)。
1. 语法格式
1 2 3 4 5 6 7 8 9 10 11 12 13
| if 条件1: 代码块1 elif 条件2: 代码块2 elif 条件3: 代码块3
else: 代码块n
|
关键注意:
elif 是 else if 的缩写,必须跟在 if 之后;
- 多个
elif 之间有优先级(先判断的条件优先),避免 “条件覆盖”(如先判断 age > 18,再判断 age > 10,后者会永远无法触发)。
2. 示例:根据分数评级
1 2 3 4 5 6 7 8 9 10 11 12
| score = 85
if score >= 90: print("评级:优秀") elif score >= 80: print("评级:良好") elif score >= 60: print("评级:及格") else: print("评级:不及格")
|
运行结果:
嵌套判断:if 语句内部嵌套 if
当需要 “在一个条件成立的前提下,再判断另一个条件” 时,使用嵌套 if(即在 if/elif/else 的代码块内,再写一个或多个 if 语句)。
1. 语法格式
1 2 3 4 5 6 7 8 9 10 11 12
| if 外层条件: 外层代码块1 if 内层条件: 内层代码块1 else: 内层代码块2 else: 外层代码块2
|
关键注意:
- 嵌套层级不宜过多(建议不超过 3 层),否则代码可读性差;
- 每一层缩进必须严格对齐(推荐 4 个空格 / 层)。
2. 示例:判断用户身份与权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| user_role = "admin" is_active = True
if is_active: print("账号已激活,正在验证权限...") if user_role == "admin": print("管理员身份,拥有全部操作权限") else: print("普通用户身份,拥有查看权限") else: print("账号未激活,请先激活账号!")
|
运行结果:
1 2
| 账号已激活,正在验证权限... 管理员身份,拥有全部操作权限
|
条件表达式的常见形式
条件判断的核心是 “条件表达式”,除了基础的比较运算,还包括逻辑运算、成员运算等,以下是常见形式的汇总:
| 表达式类型 |
运算符 |
示例 |
结果(假设 a=5, b=3) |
| 比较运算 |
==(等于) |
a == b |
False |
|
!=(不等于) |
a != b |
True |
|
>(大于) |
a > b |
True |
|
<(小于) |
a < b |
False |
|
>=(大于等于) |
a >= 5 |
True |
|
<=(小于等于) |
b <= 2 |
False |
| 逻辑运算 |
and(且) |
a > 3 and b < 5 |
True |
|
or(或) |
a < 3 or b < 5 |
True |
|
not(非) |
not (a == b) |
True |
| 成员运算 |
in(包含) |
"a" in ["a", "b", "c"] |
True |
|
not in(不包含) |
4 not in [1, 2, 3] |
True |
| 身份运算 |
is(同一对象) |
x = [1,2]; y = x; x is y |
True |
|
is not(不同对象) |
x = [1,2]; y = [1,2]; x is not y |
True |
| 布尔值判断 |
直接使用布尔值 |
if is_active:(is_active 是 True) |
执行代码块 |
|
非布尔值自动转换 |
if "hello":(非空字符串→True) |
执行代码块 |
关键:非布尔值的 “隐式转换”
Python 中,非布尔值作为条件时,会自动转换为布尔值(True 或 False),转换规则:
- 转为
False 的情况:0、0.0、None、空字符串("")、空列表([])、空字典({})、空元组(());
- 转为
True 的情况:非 0 数字、非空字符串、非空容器(列表 / 字典 / 元组)、True。
示例:利用非空判断简化代码
1 2 3 4 5 6 7 8
| cart = ["苹果", "香蕉"]
if cart: print(f"购物车中有 {len(cart)} 件商品:{cart}") else: print("购物车为空,请添加商品")
|
运行结果:
1
| 购物车中有 2 件商品:['苹果', '香蕉']
|
实战场景:综合案例
案例 1:判断闰年
闰年规则:能被 4 整除但不能被 100 整除,或能被 400 整除。
1 2 3 4 5 6 7 8
| year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print(f"{year} 年是闰年") else: print(f"{year} 年是平年")
|
运行结果(输入 2024):
案例 2:简易计算器(判断运算类型)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| num1 = float(input("请输入第一个数字:")) op = input("请输入运算符(+、-、*、/):") num2 = float(input("请输入第二个数字:"))
if op == "+": print(f"结果:{num1} + {num2} = {num1 + num2}") elif op == "-": print(f"结果:{num1} - {num2} = {num1 - num2}") elif op == "*": print(f"结果:{num1} * {num2} = {num1 * num2}") elif op == "/": if num2 != 0: print(f"结果:{num1} / {num2} = {num1 / num2}") else: print("错误:除数不能为 0!") else: print("错误:无效的运算符,请输入 +、-、*、/")
|
运行结果(输入 10、/、2):
1 2 3 4
| 请输入第一个数字:10 请输入运算符(+、-、*、/):/ 请输入第二个数字:2 结果:10.0 / 2.0 = 5.0
|