【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析
Langchain系列文章目录
01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南
02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
04-玩转 LangChain:从文档加载到高效问答系统构建的全程实战
05-玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
06-从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!
07-【深度解析】从GPT-1到GPT-4:ChatGPT背后的核心原理全揭秘
PyTorch系列文章目录
机器学习系列文章目录
深度学习系列文章目录
Python系列文章目录
01-【Python-Day 1】告别编程恐惧:轻松掌握 Python 安装与第一个程序的 6 个步骤
02-【Python-Day 2】掌握Python基石:变量、内存、标识符及int/float/bool数据类型
03-【Python-Day 3】玩转文本:字符串(String)基础操作详解 (上)
04-【Python-Day 4】玩转文本:Python 字符串常用方法深度解析 (下篇)
05-【Python-Day 5】Python 格式化输出实战:%、format()、f-string 对比与最佳实践
06- 【Python-Day 6】从零精通 Python 运算符(上):算术、赋值与比较运算全解析
07-【Python-Day 7】从零精通 Python 运算符(下):逻辑、成员、身份运算与优先级规则全解析
08-【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析
文章目录
- Langchain系列文章目录
- PyTorch系列文章目录
- 机器学习系列文章目录
- 深度学习系列文章目录
- Python系列文章目录
- 前言
- 一、`if` 语句:最简单的决策
- 1.1 什么是条件语句?
- 1.2 `if` 语句的基本语法
- 1.3 `if` 语句的工作流程
- 1.4 实例:判断用户是否成年
- 二、`if-else` 语句:二选一的抉择
- 2.1 当 `if` 不满足时怎么办?
- 2.2 `if-else` 语句的语法
- 2.3 `if-else` 语句的工作流程
- 2.4 实例:判断数字奇偶性
- 三、`if-elif-else` 语句:多重条件的复杂决策
- 3.1 处理多个互斥条件
- 3.2 `if-elif-else` 语句的语法
- 3.3 `if-elif-else` 语句的工作流程
- 3.4 实例:根据分数评定等级
- 四、嵌套 `if` 语句:决策中的决策
- 4.1 什么是嵌套 `if`?
- 4.2 嵌套 `if` 的语法与应用场景
- 4.3 实例:简单的用户权限检查
- 五、条件表达式(三元运算符):简洁的 `if-else`
- 5.1 追求代码的简洁性
- 5.2 条件表达式的语法
- 5.3 应用场景与注意事项
- 5.4 实例:根据状态赋值
- 六、常见问题与最佳实践
- 6.1 缩进错误 (`IndentationError`)
- 6.2 条件判断的类型 (Truthiness)
- 6.3 避免过于复杂的嵌套
- 6.4 `elif` 与多个 `if` 的区别
- 七、总结
前言
大家好!欢迎来到 Python 学习之旅的第 8 天。在前几天的学习中,我们掌握了 Python 的基本数据类型、字符串操作以及各种运算符。这些构成了我们编写简单指令的基础。然而,现实世界中的程序往往需要根据不同的情况做出不同的反应,就像我们在十字路口需要根据红绿灯决定是停是走一样。这就引出了我们今天的主题——条件语句。条件语句是程序逻辑控制的核心,它赋予了程序“思考”和“决策”的能力。本篇将带你深入理解 Python 中最常用、也是最重要的条件判断结构:if
、if-else
和 if-elif-else
,并探讨嵌套条件和简洁的条件表达式。学完本篇,你将能编写出更智能、更灵活的 Python 程序!
一、if
语句:最简单的决策
想象一下,你写了一个程序,需要判断一个用户输入的年龄是否满足某个条件(比如是否成年)。这时,最简单的决策工具——if
语句就派上用场了。
1.1 什么是条件语句?
条件语句(Conditional Statement)允许程序根据某个条件的真假来决定是否执行某段代码。如果条件为真(True
),则执行指定的代码块;如果条件为假(False
),则跳过该代码块。这就像设定了一个门槛,只有满足条件才能进入。
1.2 if
语句的基本语法
Python 中 if
语句的基本结构非常直观:
if condition:# 条件为 True 时执行的代码块statement(s)
# 后续代码 (无论 if 条件是否满足,都会执行)
关键点解释:
if
: 关键字,表示条件判断的开始。condition
: 一个表达式,其结果必须是布尔值(True
或False
)。这通常涉及我们在前几篇学到的比较运算符(>
,<
,==
,!=
,>=
,<=
)和逻辑运算符(and
,or
,not
)。:
: 冒号,表示条件判断结束,接下来是满足条件时要执行的代码块。- 缩进:
if
下方的代码块必须有一致的缩进(通常是 4 个空格)。这是 Python 用来标识代码块范围的方式,至关重要!没有正确的缩进,程序会报错(IndentationError
)。
1.3 if
语句的工作流程
if
语句的执行逻辑很简单,可以用流程图清晰表示:
1.4 实例:判断用户是否成年
假设我们定义成年标准为 18 岁(含)。
age = 20 # 假设用户的年龄是 20# 判断年龄是否大于等于 18
if age >= 18:print("您已成年,欢迎访问!") # 条件为 True (20 >= 18),执行这句print("程序继续执行...") # 无论是否成年,这句都会执行# 尝试将 age 改为 15,再运行一次看看效果
age = 15
if age >= 18:print("您已成年,欢迎访问!") # 条件为 False (15 >= 18),这句被跳过print("程序继续执行...")
运行结果(age=20):
您已成年,欢迎访问!
程序继续执行...
运行结果(age=15):
程序继续执行...
二、if-else
语句:二选一的抉择
if
语句只能处理条件满足时的情况。但如果我们希望在条件不满足时执行另一段代码呢?比如,成年人可以访问,未成年人显示提示信息。这时就需要 if-else
结构。
2.1 当 if
不满足时怎么办?
if-else
提供了一个“二选一”的路径。如果 if
的条件为 True
,执行 if
块;否则(else
),执行 else
块。
2.2 if-else
语句的语法
if condition:# 条件为 True 时执行的代码块statement(s)_when_true
else:# 条件为 False 时执行的代码块statement(s)_when_false
# 后续代码
关键点解释:
else
: 关键字,必须与if
配对使用,表示当if
条件不成立时执行的操作。:
:else
后面同样需要冒号。- 缩进:
else
下方的代码块也需要一致的缩进。if
和else
本身必须在同一缩进层级。
2.3 if-else
语句的工作流程
2.4 实例:判断数字奇偶性
一个经典的 if-else
应用是判断一个整数是奇数还是偶数。判断依据是该数除以 2 的余数是否为 0。
number = 7 # 待判断的数字# 判断 number 除以 2 的余数是否为 0
if number % 2 == 0:# 余数为 0,是偶数print(f"数字 {number} 是偶数。")
else:# 余数不为 0,是奇数print(f"数字 {number} 是奇数。")# 尝试将 number 改为 10,再运行一次
number = 10
if number % 2 == 0:print(f"数字 {number} 是偶数。")
else:print(f"数字 {number} 是奇数。")
运行结果(number=7):
数字 7 是奇数。
运行结果(number=10):
数字 10 是偶数。
三、if-elif-else
语句:多重条件的复杂决策
有时,我们需要处理的不是简单的“是”或“否”,也不是“二选一”,而是多种可能的情况,需要进行多重判断。例如,根据考试分数评定等级(优秀、良好、及格、不及格)。这时,if-elif-else
结构就登场了。
3.1 处理多个互斥条件
elif
是 “else if” 的缩写。它允许我们在第一个 if
条件不满足时,检查另一个条件。可以有任意多个 elif
语句。
3.2 if-elif-else
语句的语法
if condition_1:# condition_1 为 True 时执行statement(s)_1
elif condition_2:# condition_1 为 False, 且 condition_2 为 True 时执行statement(s)_2
elif condition_3:# 前两个条件都为 False, 且 condition_3 为 True 时执行statement(s)_3
# ... 可以有更多 elif ...
else:# 以上所有条件都为 False 时执行 (可选)statement(s)_else
# 后续代码
关键点解释:
elif
: 关键字,必须在if
之后,else
之前。- 执行顺序: Python 会从上到下依次检查
if
和elif
的条件。一旦找到第一个为True
的条件,就执行其对应的代码块,然后跳过所有后续的elif
和else
,直接执行整个if-elif-else
结构之后的代码。 else
(可选): 最后的else
用于处理以上所有if
和elif
条件都不满足的情况。如果省略else
,且所有条件都不满足,则整个结构不执行任何代码块。
3.3 if-elif-else
语句的工作流程
3.4 实例:根据分数评定等级
假设评分标准:
- 90 分及以上:优秀
- 80-89 分:良好
- 60-79 分:及格
- 60 分以下:不及格
score = 75 # 学生分数if score >= 90:grade = "优秀"
elif score >= 80: # 能到这里,说明 score < 90grade = "良好"
elif score >= 60: # 能到这里,说明 score < 80grade = "及格"
else: # 能到这里,说明 score < 60grade = "不及格"print(f"分数 {score} 对应的等级是:{grade}")# 尝试修改 score 的值 (例如 95, 82, 55) 观察结果
score = 95
# ... (重复 if-elif-else 结构) ...
if score >= 90: grade = "优秀"
elif score >= 80: grade = "良好"
elif score >= 60: grade = "及格"
else: grade = "不及格"
print(f"分数 {score} 对应的等级是:{grade}")score = 55
# ... (重复 if-elif-else 结构) ...
if score >= 90: grade = "优秀"
elif score >= 80: grade = "良好"
elif score >= 60: grade = "及格"
else: grade = "不及格"
print(f"分数 {score} 对应的等级是:{grade}")
运行结果(score=75):
分数 75 对应的等级是:及格
运行结果(score=95):
分数 95 对应的等级是:优秀
运行结果(score=55):
分数 55 对应的等级是:不及格
思考: 如果把 elif score >= 80
改成 if score >= 80
会发生什么?(提示:如果分数为 95,会输出什么?) 答案是会先判断>=90
为True,输出“优秀”,然后独立地判断>=80
也为True,将grade
覆盖为“良好”,最后输出“良好”。这说明elif
保证了分支的互斥性。
四、嵌套 if
语句:决策中的决策
有时,一个决策可能依赖于另一个决策的结果。比如,你想检查一个用户是否有权限访问某个资源,可能需要先判断他是否登录,如果登录了,再判断他的会员等级。这种在一个 if
、elif
或 else
代码块内部再包含另一个 if
语句(或 if-else
, if-elif-else
)的情况,称为嵌套 if
语句。
4.1 什么是嵌套 if
?
简单来说,就是 if
里面套 if
。
4.2 嵌套 if
的语法与应用场景
if outer_condition:# 外层条件满足时执行print("外层条件满足")if inner_condition:# 内外层条件都满足时执行print("内层条件也满足")else:# 外层满足,内层不满足时执行print("内层条件不满足")
else:# 外层条件不满足时执行print("外层条件不满足")
应用场景:
- 需要进行多层次、有依赖关系的判断。
- 细化某个分支下的逻辑。
注意事项:
- 嵌套层级不宜过多,否则会使代码难以阅读和维护。通常超过 2-3 层就需要考虑是否可以通过其他逻辑(如函数、逻辑运算符
and
)来简化。 - 注意内层
if
的缩进,它必须相对于外层if
的代码块进行缩进。
4.3 实例:简单的用户权限检查
is_logged_in = True
user_role = "guest" # 可能的角色有 "admin", "user", "guest"if is_logged_in:print("用户已登录。")if user_role == "admin":print("欢迎管理员!拥有所有权限。")elif user_role == "user":print("欢迎普通用户!拥有部分权限。")else: # 假设登录了但角色未知或为 guestprint("欢迎访客!权限受限。")
else:print("用户未登录,请先登录。")# 尝试修改 is_logged_in 和 user_role 的值观察输出变化
is_logged_in = True
user_role = "admin"
# ... (重复嵌套 if 结构) ...
if is_logged_in: print("用户已登录。");
if user_role == "admin": print("欢迎管理员!拥有所有权限。")
elif user_role == "user": print("欢迎普通用户!拥有部分权限。")
else: print("欢迎访客!权限受限。")
else: print("用户未登录,请先登录。")is_logged_in = False
# ... (重复嵌套 if 结构) ...
if is_logged_in: print("用户已登录。");
if user_role == "admin": print("欢迎管理员!拥有所有权限。")
elif user_role == "user": print("欢迎普通用户!拥有部分权限。")
else: print("欢迎访客!权限受限。")
else: print("用户未登录,请先登录。")
运行结果(is_logged_in=True, user_role=“guest”):
用户已登录。
欢迎访客!权限受限。
运行结果(is_logged_in=True, user_role=“admin”):
用户已登录。
欢迎管理员!拥有所有权限。
运行结果(is_logged_in=False):
用户未登录,请先登录。
五、条件表达式(三元运算符):简洁的 if-else
对于简单的 if-else
赋值操作,Python 提供了一种更简洁的写法,称为条件表达式(Conditional Expression),也常被称为三元运算符(Ternary Operator)。
5.1 追求代码的简洁性
当 if-else
结构仅仅是为了根据条件给一个变量赋不同的值时,使用标准写法可能显得有些冗长。
# 标准 if-else 写法
age = 20
if age >= 18:status = "成年"
else:status = "未成年"
print(status)
5.2 条件表达式的语法
variable = value_if_true if condition else value_if_false
关键点解释:
condition
: 判断条件。value_if_true
: 如果condition
为True
,整个表达式的结果是这个值。value_if_false
: 如果condition
为False
,整个表达式的结果是这个值。- 这种写法非常紧凑,将
if-else
的逻辑压缩到了一行。
5.3 应用场景与注意事项
- 适用场景: 主要用于基于简单条件进行二选一赋值。
- 优点: 代码简洁。
- 缺点: 如果
condition
或value_if_true
/value_if_false
过于复杂,会降低代码可读性。此时宁可使用标准的if-else
结构。不要滥用!可读性优先!
5.4 实例:根据状态赋值
使用条件表达式改写 5.1 中的例子:
age = 20
status = "成年" if age >= 18 else "未成年" # 一行搞定
print(status)age = 15
status = "成年" if age >= 18 else "未成年"
print(status)
运行结果(age=20):
成年
运行结果(age=15):
未成年
六、常见问题与最佳实践
在使用条件语句时,新手可能会遇到一些常见问题。
6.1 缩进错误 (IndentationError
)
这是 Python 中最常见的错误之一。务必确保 if
, elif
, else
下方的代码块有正确且一致的缩进(通常是 4 个空格)。
# 错误示例: 缺少缩进
age = 20
if age >= 18:
print("成年") # IndentationError: expected an indented block# 正确示例
if age >= 18:print("成年")
6.2 条件判断的类型 (Truthiness)
if
后面的条件不一定非得是严格的布尔值 True
或 False
。Python 会自动将很多类型的值评估为“真值”(Truthy)或“假值”(Falsy):
- Falsy(被视为 False):
False
,None
, 数字 0 (包括0
,0.0
), 空序列 (空字符串""
, 空列表[]
, 空元组()
, 空字典{}
), 空集合set()
. - Truthy(被视为 True): 其他所有值,包括非零数字、非空序列等。
my_list = []
if my_list: # my_list 是空列表,为 Falsyprint("列表不为空")
else:print("列表为空") # 这句会被执行name = "Alice"
if name: # name 是非空字符串,为 Truthyprint(f"名字是: {name}") # 这句会被执行
理解 Truthiness 可以让代码更简洁,但有时显式比较(如 if my_list is not None and len(my_list) > 0:
)会更清晰。
6.3 避免过于复杂的嵌套
过深的嵌套 if
会让代码像迷宫一样难以理解。可以尝试以下方法简化:
- 合并条件: 使用
and
,or
逻辑运算符合并条件。 - 提前返回/跳出: 在函数中使用
return
提前结束判断。 - 重构逻辑: 重新组织判断顺序或拆分成更小的函数。
- 使用字典映射/策略模式: 对于更复杂的条件分支,可以考虑更高级的设计模式。
6.4 elif
与多个 if
的区别
if-elif-else
: 是一组互斥的判断。一旦某个条件满足,其代码块执行后,整个结构就结束了。- 多个独立的
if
: 每个if
都是独立的判断。无论前面的if
是否满足,后面的if
都会被检查。
score = 95# 使用 elif (互斥)
if score >= 90:print("优秀(elif)") # 输出这句,然后结束判断
elif score >= 80:print("良好(elif)")print("-" * 10)# 使用多个 if (独立)
if score >= 90:print("优秀(if)") # 输出这句
if score >= 80: # 独立判断,也满足print("良好(if)") # 输出这句
运行结果:
优秀(elif)
----------
优秀(if)
良好(if)
务必根据你的逻辑需求选择正确的结构。
七、总结
恭喜你,完成了 Python 条件语句的学习!这可是编程逻辑控制的重中之重。让我们回顾一下今天的主要内容:
if
语句: 实现最基本的条件判断,当条件为True
时执行指定代码块。if-else
语句: 提供“二选一”的逻辑,条件为True
执行if
块,为False
执行else
块。if-elif-else
语句: 处理多个互斥条件,按顺序检查,执行第一个满足条件的块,并跳过其余部分。else
可选,用于处理所有条件都不满足的情况。- 嵌套
if
语句: 在一个条件块内部再进行条件判断,用于处理更复杂的、有层级关系的逻辑。要注意避免过度嵌套以保持代码可读性。 - 条件表达式(三元运算符):
if-else
的简洁形式,适用于简单的二选一赋值,语法为value_if_true if condition else value_if_false
。 - 关键注意事项: 缩进是 Python 语法的一部分,必须严格遵守;理解 Truthiness 可以简化条件判断;区分
elif
(互斥)和多个if
(独立)的应用场景。
掌握了条件语句,你的 Python 代码就能根据不同的输入和状态做出智能的响应了。这是编写实用程序的关键一步。在下一篇文章中,我们将学习另一种控制程序流程的重要工具——循环语句,它能让我们的程序重复执行任务。敬请期待!