Python 的 if 语句是条件判断语句,用于根据不同条件执行不同的代码块,是编程中最基础且核心的语法之一。以下从基本结构、常见用法、进阶技巧三部分详细讲解,附带实战示例。
一、基本结构
if 语句的核心逻辑是:满足条件就执行对应的代码块,不满足则跳过。Python 中通过缩进(通常是 4 个空格)区分代码块,而非大括号 {}。
1. 单分支:if 语句
仅当条件为 True 时执行代码块,条件为 False 时不执行。
python
运行
# 语法格式
if 条件表达式:
代码块(缩进)
示例:判断数字是否为正数
python
运行
num = 10
if num > 0:
print(f"{num} 是正数") # 条件成立,执行此句
print("条件判断结束") # 同属 if 代码块,也会执行
print("程序结束") # 无缩进,不属于 if 块,必定执行
输出:
plaintext
10 是正数
条件判断结束
程序结束
2. 双分支:if-else 语句
满足条件执行 if 块,不满足则执行 else 块(二选一)。
python
运行
# 语法格式
if 条件表达式:
代码块1(条件成立时执行)
else:
代码块2(条件不成立时执行)
示例:判断数字正负
python
运行
num = -3
if num > 0:
print(f"{num} 是正数")
else:
print(f"{num} 不是正数(可能是负数或0)")
输出:
plaintext
-3 不是正数(可能是负数或0)
3. 多分支:if-elif-else 语句
多个条件依次判断,满足第一个条件后执行对应代码块,后续条件不再判断(多选一)。
python
运行
# 语法格式
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
...
else:
代码块N(所有条件都不成立时执行)
示例:成绩等级判断
python
运行
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好") # 85 满足此条件,执行后跳过后续判断
elif score >= 60:
print("及格")
else:
print("不及格")
输出:
plaintext
良好
二、条件表达式的合法形式
if 后的条件表达式必须返回布尔值(True/False),常见写法有:
1. 比较运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
== | 等于(注意是两个等号) | 5 == 5 → True |
!= | 不等于 | 5 != 3 → True |
> | 大于 | 7 > 2 → True |
< | 小于 | 3 < 9 → True |
>= | 大于等于 | 4 >= 4 → True |
<= | 小于等于 | 6 <= 8 → True |
注意:== 是判断相等,= 是赋值,不要混淆!
python
运行
# 错误示例:用 = 做判断(语法错误)
if num = 10: # SyntaxError: invalid syntax
# 正确示例:用 == 做判断
if num == 10:
print("num 等于 10")
2. 逻辑运算符(多条件组合)
| 运算符 | 含义 | 优先级 | 示例(a=True, b=False) |
|---|---|---|---|
and | 逻辑与(都真才真) | 高 | a and b → False |
or | 逻辑或(一真就真) | 中 | a or b → True |
not | 逻辑非(取反) | 最高 | not a → False |
示例:判断成绩是否在 [60, 80) 之间
python
运行
score = 75
if score >= 60 and score < 80:
print("成绩及格且未达到良好")
3. 成员运算符(判断是否在序列中)
| 运算符 | 含义 | 示例 |
|---|---|---|
in | 存在于序列中 | 3 in [1,2,3] → True |
not in | 不存在于序列中 | 5 not in (1,2,3) → True |
示例:判断用户名是否在白名单中
python
运行
white_list = ["admin", "user1", "user2"]
username = "user3"
if username in white_list:
print("允许登录")
else:
print("禁止登录")
4. 布尔值直接判断
- 空值(
None)、0、空序列([]/""/()/{})会被视为False - 非空值、非 0 数字、非空序列会被视为
True
示例:判断列表是否非空
python
运行
nums = [1,2,3]
if nums: # 等价于 if len(nums) > 0:
print("列表非空")
else:
print("列表为空")
三、进阶用法
1. 嵌套 if 语句
在 if/else 代码块中再嵌套一层或多层 if 语句,用于更复杂的条件判断。
示例:判断是否为闰年(嵌套逻辑)
python
运行
year = 2024
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
print(f"{year} 是闰年")
else:
print(f"{year} 不是闰年")
else:
print(f"{year} 是闰年")
else:
print(f"{year} 不是闰年")
输出:
plaintext
2024 是闰年
2. 三元运算符(简洁版 if-else)
用于简单的二选一赋值场景,语法更简洁(一行搞定)。
python
运行
# 语法格式:变量 = 表达式1 if 条件 else 表达式2
# 条件成立 → 变量=表达式1;不成立 → 变量=表达式2
示例:求两个数的最大值
python
运行
a = 15
b = 20
max_num = a if a > b else b
print(max_num) # 输出:20
3. 多条件简化(in 替代多个 or)
当多个 or 条件是判断 “是否属于某个集合” 时,用 in 更简洁。
python
运行
# 繁琐写法
if fruit == "苹果" or fruit == "香蕉" or fruit == "橙子":
print("是常见水果")
# 简洁写法
if fruit in ["苹果", "香蕉", "橙子"]:
print("是常见水果")
四、常见错误与注意事项
-
缩进错误:Python 严格依赖缩进,同一代码块的缩进必须一致(推荐 4 个空格,不要混合空格和 Tab)。
python
运行
# 错误示例:缩进不一致 if num > 0: print("正数") print("结束") # IndentationError: unexpected indent -
冒号遗漏:
if/elif/else后必须加冒号:,否则语法错误。python
运行
if num > 0 # SyntaxError: invalid syntax(缺少冒号) print("正数") -
条件表达式的 “陷阱” :
-
不要用
==判断浮点数(浮点数有精度误差),改用差值小于阈值:python
运行
# 错误:0.1 + 0.2 不等于 0.3 if 0.1 + 0.2 == 0.3: # False print("相等") # 正确:差值小于 1e-9 视为相等 if abs((0.1 + 0.2) - 0.3) < 1e-9: # True print("相等") -
is与==的区别:is判断内存地址是否相同,==判断值是否相同(仅小整数 / 字符串可能复用内存):python
运行
a = 10 b = 10 print(a == b) # True(值相等) print(a is b) # True(小整数复用内存) c = [1,2,3] d = [1,2,3] print(c == d) # True(值相等) print(c is d) # False(不同列表,内存地址不同)
-