Python 条件判断基础:if、elif、else 与运算符详解
1. 前言
在编写程序时,我们通常希望代码能够根据具体情况做出不同的反应。如果程序只是按照顺序一条一条执行语句,那么它就无法处理复杂多变的业务逻辑。本章将重点介绍如何让程序具备自我选择的功能,即根据条件判断是否执行特定的语句块。
Python 条件判断通过 if、elif、else 语句实现程序分支逻辑。核心在于缩进规范、条件表达式真假判定及布尔运算符的使用。常见陷阱包括 input() 返回字符串类型需转换、== 与 is 的区别以及短路逻辑。掌握这些基础是编写复杂逻辑的前提。本文详细讲解了语句块定义、各类运算符用法、真值测试机制,并提供了登录验证等实战案例,帮助读者全面理解 Python 流程控制。

在编写程序时,我们通常希望代码能够根据具体情况做出不同的反应。如果程序只是按照顺序一条一条执行语句,那么它就无法处理复杂多变的业务逻辑。本章将重点介绍如何让程序具备自我选择的功能,即根据条件判断是否执行特定的语句块。
Python 程序之所以能实现这种智能选择,是因为它支持基于布尔值的条件判断机制。通过条件语句,我们可以控制程序的执行流程,使其在不同的输入或状态下运行不同的代码路径。
语句块是指一组在特定条件下(如条件为真)执行一次,或在循环中重复执行的语句集合。在 Python 中,语句块的划分不依赖大括号 {},而是完全依靠缩进(Indentation)。
: 后开始新的语句块。当回退到与块起始行相同的缩进量时,表示当前块结束。注意:许多现代集成开发环境(IDE)和编辑器会自动处理缩进对齐,但开发者仍需确保手动修改时保持一致性,避免因混用 Tab 和空格导致的
IndentationError。
Python 提供了 if、elif 和 else 关键字来实现分支逻辑。
if 语句用于检查一个条件。如果条件判定为真(True),则执行紧随其后的语句块;如果为假(False),则跳过该语句块。
age = 20
if age >= 18:
print('your age is', age)
print('adult')
else 子句是 if 的补充,用于处理条件不满足时的情况。if...else... 搭配使用时,若 if 条件为 False,则执行 else 下的语句块。
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
当需要检查多个互斥条件时,使用 elif(else if 的简写)。它可以连接多个条件判断,形成更细致的决策树。
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
if 语句的执行是从上往下的。一旦某个条件判断为 True,对应的语句块执行完毕后,后续的 elif 和 else 将被忽略。这意味着条件的顺序非常重要。
age = 20
if age >= 6:
print('teenager') # 这里会先匹配成功
elif age >= 18:
print('adult')
else:
print('kid')
在使用 input() 获取用户输入时,返回的数据类型默认为字符串(str)。直接将其与整数进行比较会引发 TypeError。
# 错误示例
birth = input('birth: ')
if birth < 2000: # TypeError: unorderable types: str() > int()
print('00 前')
else:
print('00 后')
# 正确示例
s = input('birth: ')
birth = int(s) # 显式转换为整数
if birth < 2000:
print('00 前')
else:
print('00 后')
条件判断的核心在于表达式。Python 支持多种比较和逻辑运算符。
| 表达式 | 描述 |
|---|---|
| x == y | x 等于 y |
| x < y | x 小于 y |
| x > y | x 大于 y |
| x >= y | x 大于等于 y |
| x <= y | x 小于等于 y |
| x != y | x 不等于 y |
| x is y | x 和 y 是同一个对象 |
| x is not y | x 和 y 不是同一对象 |
| x in y | x 是 y 容器的成员 |
| x not in y | x 不是 y 容器的成员 |
链式比较:Python 允许将多个比较运算符连在一起使用,例如 0 < age < 120 等价于 0 < age and age < 120。
务必区分单个等号 = 和双等号 ==。
= 是赋值运算符,用于改变变量值。== 是比较运算符,用于判断两个值是否相等。>>> "python" == "python"
True
>>> "Python" == "python"
False
>>> "python" = "python" # 语法错误
SyntaxError: can't assign to literal
is 运算符用于判断两个变量是否引用内存中的同一个对象,而不仅仅是值相等。这在处理可变对象(如列表、字典)时尤为重要。
x = y = [1, 2, 3]
z = [1, 2, 3]
print(x == y) # True,值相等
print(x == z) # True,值相等
print(x is y) # True,同一个对象
print(x is z) # False,不同的对象实例
Python 提供 and、or、not 进行逻辑组合。
# 短路逻辑示例
a = False
b = True
result = a and b # 结果为 False,b 不会被评估
# 返回值特性
# 如果 x 为假,返回 x 的值;否则返回 y 的值
print(False and 5) # 输出 False
print(True or 5) # 输出 True
在条件判断中,某些非布尔值会被自动转换为布尔值。以下值为'假'(Falsy):
其余所有值均为'真'(Truthy)。
if []:
print("This won't print")
if [1]:
print("This will print")
下面是一个结合条件判断、类型转换和逻辑运算的综合示例,模拟一个简单的用户登录验证系统。
username = input("请输入用户名:")
password = input("请输入密码:")
# 验证用户名和密码是否为空
if not username or not password:
print("错误:用户名和密码不能为空!")
elif username == "admin" and password == "123456":
print("登录成功!欢迎回来。")
# 进一步检查权限
if len(username) > 4:
print("检测到管理员账号,进入管理面板...")
else:
print("普通用户模式启动...")
else:
print("错误:用户名或密码不正确。")
if、elif、else 的组合使用,注意从上往下匹配的逻辑。==(相等)与 is(同一性),理解 in 成员资格判断。input() 返回的是字符串,需转换后再参与数值比较。and/or 的短路特性优化代码性能。掌握这些基础条件判断知识,是编写复杂 Python 程序的前提。在实际开发中,合理运用条件逻辑可以有效提升程序的健壮性和用户体验。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online