条件判断
条件判断是程序的基础结构之一,让程序能够根据不同的情况做出不同的响应。本章将详细介绍Python中的条件判断语句。
if语句基础
最基本的条件判断使用 if 语句:
age = 18 if age >= 18: print('已成年') 已成年
代码块与缩进
重要:Python使用缩进来表示代码块,不像其他语言使用大括号:
┌─────────────────────────────────────────────────────────────┐ │ 缩进与代码块 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ if 条件: │ │ │ │ │ ├──▶ 这里是 if 内部的代码(缩进4个空格) │ │ │ │ │ └──▶ 这也是 if 内部的代码 │ │ │ │ 这里已经是 if 之外的代码了 │ │ │ │ ⚠️ Python中缩进必须一致:使用4个空格或1个Tab │ │ │ └─────────────────────────────────────────────────────────────┘
常见错误
初学者常犯的错误:
- 混用空格和Tab(Python会报错或产生奇怪的行为)
- if后面的语句忘记加冒号
:
if-else语句
if-else结构在条件为True时执行一个代码块,否则执行另一个代码块:
age = 16 if age >= 18: print('已成年') else: print('未成年') 未成年
if-elif-else语句
当有多个条件时,使用 elif(else if的缩写):
score = 85 if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 60: print('及格') else: print('不及格') 良好
执行流程图
┌─────────────────────────────────────────────────────────────┐ │ 条件判断流程图 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ │ │ │ 开始 │ │ │ └────┬─────┘ │ │ │ │ │ ┌────▼─────┐ │ │ │ score>=90 │ │ │ └────┬─────┘ │ │ Yes ↙ ↘ No │ │ ┌────┐ ┌──────────┐ │ │ │优秀│ │ score>=80 │ │ │ └──┬─┘ └────┬─────┘ │ │ │ Yes ↙ ↘ No │ │ │ ┌────┐ ┌──────────┐ │ │ │ │良好│ │ score>=60 │ │ │ │ └──┬─┘ └────┬─────┘ │ │ │ │ Yes ↙ ↘ No │ │ │ │ ┌────┐ ┌──────┐ │ │ │ │ │及格│ │不及格│ │ │ │ │ └────┘ └──┬───┘ │ │ │ │ │ │ │ └────────┼──────────────────┘ │ │ │ │ │ ┌────▼─────┐ │ │ │ 结束 │ │ │ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘
逻辑运算符
Python有三个逻辑运算符:and(与)、or(或)、not(非):
and(与运算)
所有条件都为True时,结果才为True:
>>> age = 20 >>> has_ticket = True >>> if age >= 18 and has_ticket: ... print('允许入场') 允许入场
or(或运算)
任一条件为True时,结果就为True:
>>> is_vip = False >>> is_member = True >>> if is_vip or is_member: ... print('享受折扣') 享受折扣
not(非运算)
对布尔值取反:
>>> is_raining = False >>> if not is_raining: ... print('可以出门') 可以出门
运算符优先级
逻辑运算符的优先级:not > and > or
嵌套条件
条件语句可以嵌套使用:
age = 20 has_ticket = True if age >= 18: print('年龄符合') if has_ticket: print('允许入场') else: print('需要购票') else: print('年龄不符合') 年龄符合 允许入场
注意
虽然嵌套条件可以实现复杂逻辑,但过多嵌套会让代码难以阅读。通常可以用逻辑运算符来减少嵌套。
短路运算
Python的逻辑运算符具有"短路"特性:
and的短路
a and b:如果a为False,则直接返回False,不计算b:
>>> def func(): ... print('b被调用') ... return True False and func() False # 注意:'b被调用' 没有打印出来!
or的短路
a or b:如果a为True,则直接返回True,不计算b:
>>> True or func() True # 注意:'b被调用' 没有打印出来!
Python的真假值
在Python中,以下值被认为是假(False):
False布尔假
None空值
0数字零
''空字符串
[]空列表
{}空字典
其他所有值都是真(True)。
>>> if 'hello': ... print('字符串为真') 字符串为真 >>> if 0: ... print('这不会打印') # 0是假,所以不执行
练习题
练习1:成绩评级
编写程序,根据成绩输出等级:
- 90分及以上:优秀
- 80-89分:良好
- 60-79分:及格
- 60分以下:不及格
练习2:登录验证
编写程序检查用户是否能够登录:
- 用户名是 "admin" 且 密码是 "123456"
- 或者用户名是 "user" 且 密码是 "password"
小结
- 条件判断使用
if-elif-else语句; - 缩进是Python代码块的关键,必须保持一致;
and、or、not用于组合条件;- 逻辑运算符具有短路特性;
- Python中
0、''、[]、{}、None、False都是假值。
🐍 Python 在线代码编辑器
📝 运行结果