一、基础语法与核心概念
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. 条件表达式的规则
条件表达式最终必须返回 True 或 False,常见形式:
- 比较运算符:
==(等于)、!=(不等于)、>、<、>=、<= - 逻辑运算符:
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("用户名不存在")
总结
- Python 条件控制核心是
if-elif-else,缩进是区分代码块的关键,条件行末尾必须加:。 - 条件表达式可使用比较/逻辑/成员/身份运算符,也可利用“真值/假值”简化判断(如
if list:判断列表非空)。 - 进阶用法包括三元表达式、嵌套条件(慎用)、多条件
in优化,需注意避免缩进错误、==/=混淆等常见问题。
书签篮