0%

Python 条件判断详解:语法、逻辑与实战示例

Python 条件判断详解:语法、逻辑与实战示例

条件判断是编程中的核心逻辑之一,用于根据 “条件是否成立” 执行不同代码块。Python 中通过 ifelifelse 关键字实现条件判断,语法简洁且逻辑清晰。本文从 “基础语法→多条件判断→嵌套判断→实战场景” 四个维度,系统讲解 Python 条件判断的使用方法,帮你掌握不同场景下的逻辑编写技巧。

基础语法:if 语句(单条件判断)

if 是 Python 条件判断的基础,用于判断 “一个条件” 是否成立:若条件为 True(真),执行缩进的代码块;若为 False(假),则跳过该代码块。

1. 语法格式

1
2
3
4
5
6
if 条件表达式:
# 条件成立时执行的代码(必须缩进,通常用 4 个空格)
代码语句1
代码语句2
# 条件不成立时,跳过缩进块,执行后续代码
后续代码
关键说明:
  • 条件表达式:结果必须是 “布尔值”(True或False),常见形式包括:
    • 比较运算(><==!=>=<=);
    • 逻辑运算(andornot);
    • 成员运算(innot in);
    • 身份运算(isis not)。
  • 冒号(:if 语句结尾必须加冒号,用于标记 “代码块的开始”。
  • 缩进:Python 通过缩进区分代码块(推荐 4 个空格),缩进不一致会报错(IndentationError)。

2. 示例:判断数字大小

1
2
3
4
5
6
7
# 定义一个变量
age = 18

# 判断 age 是否大于等于 18
if age >= 18:
print("已成年,可独立办理业务") # 条件成立时执行
print("判断结束") # 无论条件是否成立,都会执行(不在缩进块内)

运行结果

1
2
已成年,可独立办理业务
判断结束

若将 age 改为 16,运行结果会变为:

1
判断结束

双向判断:if-else 语句(二选一逻辑)

当需要 “条件成立执行 A 代码,不成立执行 B 代码” 时,使用 if-else 语句(二选一逻辑,必执行其中一个代码块)。

1. 语法格式

1
2
3
4
5
6
7
8
if 条件表达式:
# 条件成立时执行的代码块(True 分支)
代码语句1
else:
# 条件不成立时执行的代码块(False 分支)
代码语句2
# 两个分支执行完后,继续执行后续代码
后续代码

2. 示例:判断登录密码

1
2
3
4
5
6
7
8
9
10
11
# 预设正确密码
correct_password = "python123"

# 接收用户输入
user_input = input("请输入密码:")

# 判断密码是否正确
if user_input == correct_password:
print("密码正确,登录成功!")
else:
print("密码错误,请重新输入!")

运行结果(输入正确时)

1
2
请输入密码:python123
密码正确,登录成功!

运行结果(输入错误时)

1
2
请输入密码:123456
密码错误,请重新输入!

多条件判断:if-elif-else 语句(多选一逻辑)

当需要判断 “多个条件”(且条件有优先级)时,使用 if-elif-else 语句:按顺序判断条件,只要有一个条件成立,就执行对应分支并跳过后续判断;若所有条件都不成立,执行 else 分支(else 可选)。

1. 语法格式

1
2
3
4
5
6
7
8
9
10
11
12
13
if 条件1:
# 条件1成立时执行,执行后跳过后续所有判断
代码块1
elif 条件2:
# 条件1不成立、条件2成立时执行
代码块2
elif 条件3:
# 条件1、2不成立、条件3成立时执行
代码块3
# ... 可添加更多 elif
else:
# 所有条件都不成立时执行(可选)
代码块n
关键注意:
  • elifelse if 的缩写,必须跟在 if 之后;
  • 多个 elif 之间有优先级(先判断的条件优先),避免 “条件覆盖”(如先判断 age > 18,再判断 age > 10,后者会永远无法触发)。

2. 示例:根据分数评级

1
2
3
4
5
6
7
8
9
10
11
12
# 定义分数(0-100)
score = 85

# 多条件判断评级
if score >= 90:
print("评级:优秀")
elif score >= 80: # 隐含条件:score < 90
print("评级:良好")
elif score >= 60: # 隐含条件:score < 80
print("评级:及格")
else: # 隐含条件:score < 60
print("评级:不及格")

运行结果

1
评级:良好

嵌套判断:if 语句内部嵌套 if

当需要 “在一个条件成立的前提下,再判断另一个条件” 时,使用嵌套 if(即在 if/elif/else 的代码块内,再写一个或多个 if 语句)。

1. 语法格式

1
2
3
4
5
6
7
8
9
10
11
12
if 外层条件:
# 外层条件成立时执行
外层代码块1
if 内层条件:
# 内层条件成立时执行(需同时满足外层条件)
内层代码块1
else:
# 内层条件不成立时执行(外层条件仍成立)
内层代码块2
else:
# 外层条件不成立时执行
外层代码块2
关键注意:
  • 嵌套层级不宜过多(建议不超过 3 层),否则代码可读性差;
  • 每一层缩进必须严格对齐(推荐 4 个空格 / 层)。

2. 示例:判断用户身份与权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 定义用户信息
user_role = "admin" # 角色:admin(管理员)、user(普通用户)
is_active = True # 账号是否激活:True(激活)、False(未激活)

# 外层判断:账号是否激活
if is_active:
print("账号已激活,正在验证权限...")
# 内层判断:用户角色是否为管理员
if user_role == "admin":
print("管理员身份,拥有全部操作权限")
else:
print("普通用户身份,拥有查看权限")
else:
print("账号未激活,请先激活账号!")

运行结果

1
2
账号已激活,正在验证权限...
管理员身份,拥有全部操作权限

条件表达式的常见形式

条件判断的核心是 “条件表达式”,除了基础的比较运算,还包括逻辑运算、成员运算等,以下是常见形式的汇总:

表达式类型 运算符 示例 结果(假设 a=5, b=3)
比较运算 ==(等于) a == b False
!=(不等于) a != b True
>(大于) a > b True
<(小于) a < b False
>=(大于等于) a >= 5 True
<=(小于等于) b <= 2 False
逻辑运算 and(且) a > 3 and b < 5 True
or(或) a < 3 or b < 5 True
not(非) not (a == b) True
成员运算 in(包含) "a" in ["a", "b", "c"] True
not in(不包含) 4 not in [1, 2, 3] True
身份运算 is(同一对象) x = [1,2]; y = x; x is y True
is not(不同对象) x = [1,2]; y = [1,2]; x is not y True
布尔值判断 直接使用布尔值 if is_active:(is_active 是 True) 执行代码块
非布尔值自动转换 if "hello":(非空字符串→True) 执行代码块

关键:非布尔值的 “隐式转换”

Python 中,非布尔值作为条件时,会自动转换为布尔值(TrueFalse),转换规则:

  • 转为 False 的情况00.0None、空字符串("")、空列表([])、空字典({})、空元组(());
  • 转为 True 的情况:非 0 数字、非空字符串、非空容器(列表 / 字典 / 元组)、True

示例:利用非空判断简化代码

1
2
3
4
5
6
7
8
# 定义一个列表(存储用户购物车)
cart = ["苹果", "香蕉"]

# 简化判断:无需写 len(cart) > 0,直接判断列表是否非空
if cart:
print(f"购物车中有 {len(cart)} 件商品:{cart}")
else:
print("购物车为空,请添加商品")

运行结果

1
购物车中有 2 件商品:['苹果', '香蕉']

实战场景:综合案例

案例 1:判断闰年

闰年规则:能被 4 整除但不能被 100 整除,或能被 400 整除。

1
2
3
4
5
6
7
8
# 接收用户输入的年份
year = int(input("请输入年份:"))

# 判断闰年
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} 年是闰年")
else:
print(f"{year} 年是平年")

运行结果(输入 2024)

1
2
请输入年份:2024
2024 年是闰年

案例 2:简易计算器(判断运算类型)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 接收用户输入
num1 = float(input("请输入第一个数字:"))
op = input("请输入运算符(+、-、*、/):")
num2 = float(input("请输入第二个数字:"))

# 判断运算符类型并计算
if op == "+":
print(f"结果:{num1} + {num2} = {num1 + num2}")
elif op == "-":
print(f"结果:{num1} - {num2} = {num1 - num2}")
elif op == "*":
print(f"结果:{num1} * {num2} = {num1 * num2}")
elif op == "/":
# 嵌套判断:避免除数为 0
if num2 != 0:
print(f"结果:{num1} / {num2} = {num1 / num2}")
else:
print("错误:除数不能为 0!")
else:
print("错误:无效的运算符,请输入 +、-、*、/")

运行结果(输入 10、/、2)

1
2
3
4
请输入第一个数字:10
请输入运算符(+、-、*、/):/
请输入第二个数字:2
结果:10.0 / 2.0 = 5.0

欢迎关注我的其它发布渠道