以下是Python中条件语句(if-elif-else)的详细讲解,包含基础语法、实用技巧和典型应用场景:
一、基础语法结构
if 条件1:
# 条件1为True时执行
elif 条件2:
# 条件1为False且条件2为True时执行
else:
# 所有条件都为False时执行
执行流程:
二、核心组成部分
1. 条件表达式
- 比较运算符:==, !=, >, <, >=, <=
- 逻辑运算符:and, or, not
- 成员检测:in, not in
2. 代码块
- 通过缩进(通常4个空格)表示代码块范围
- 冒号:标志着条件语句的开始
三、典型示例
1. 基础判断
age = 18
if age >= 18:
print("已成年")
else:
print("未成年")
2. 多条件分支
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好") # 本例会执行这里
elif score >= 60:
print("及格")
else:
print("不及格")
3. 复合条件
username = "admin"
password = "123456"
if username == "admin" and password == "123456":
print("登录成功")
else:
print("用户名或密码错误")
四、特殊用法技巧
1. 单行if语句
x = 10
if x > 5: print("x大于5") # 简单语句可写在一行
2. 三元表达式
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 输出"成年"
3. 空值检查惯用法
name = input("请输入姓名: ") or "匿名用户"
# 如果输入为空,则name为"匿名用户"
五、常见应用场景
1. 用户输入验证
user_input = input("请输入数字: ")
if user_input.isdigit():
num = int(user_input)
print(f"平方值为: {num**2}")
else:
print("输入无效,必须为数字!")
2. 文件扩展名判断
filename = "report.pdf"
if filename.endswith(".pdf"):
print("PDF文件")
elif filename.endswith((".jpg", ".png")):
print("图片文件")
else:
print("未知格式")
3. 权限检查
is_admin = True
is_logged_in = False
if is_logged_in:
if is_admin:
print("显示管理员面板")
else:
print("显示用户面板")
else:
print("请先登录")
六、注意事项
- 缩进必须一致:
# 错误示例
if True:
print("hello") # IndentationError
elif和else可选:
# 只有if
if condition:
do_something()
# if-else结构
if condition:
do_this()
else:
do_that()
浮点数比较需谨慎:
# 避免直接比较浮点数
if abs(a - b) < 1e-9: # 判断是否近似相等
print("a约等于b")
条件表达式求值顺序:
if x > 0 and y/x > 2: # 当x=0时不会报错,因为and会短路
print("条件成立")
七、调试技巧
- 使用print()检查条件结果:
print(f"条件结果: {x > y}") # 查看条件是否按预期求值
- 验证所有分支:
def test_grade(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
else:
return "C"
# 测试用例应覆盖所有分支
assert test_grade(95) == "A"
assert test_grade(85) == "B"
assert test_grade(70) == "C"
八、进阶用法
1. 模式匹配(Python 3.10+)
status = 404
match status:
case 200:
print("成功")
case 404:
print("未找到")
case _:
print("未知状态码")
2. 字典代替复杂分支
def handle_http_status(code):
actions = {
200: lambda: print("OK"),
404: lambda: print("Not Found"),
500: lambda: print("Server Error")
}
actions.get(code, lambda: print("Unknown code"))()
掌握条件语句后,你可以实现程序的分支逻辑控制。接下来可以学习循环语句(while/for)来完善程序流程控制能力