Python 教程 / 条件判断

条件判断

条件判断是程序的基础结构之一,让程序能够根据不同的情况做出不同的响应。本章将详细介绍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代码块的关键,必须保持一致;
  • andornot 用于组合条件;
  • 逻辑运算符具有短路特性;
  • Python中 0''[]{}NoneFalse 都是假值。
🐍 Python 在线代码编辑器
📝 运行结果