python
if
else
说明
《Python 教程》 帮助读者成为泛程序员,持续修订中,提供建议、纠错、催更加微信 gairuo123。查看 更新日志。作者开办 Python 数据分析培训,详情 Python 数据分析培训。
![]() |
本教程作者所著新书《Python之光:Python编程入门与实战》(ISBN:9787111729891)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
现实世界并不是那么整齐划一的,会出现各种各样的情况,我们将这些情况分类进行处理,形成了多个逻辑分支。IF 条件语句是流程控制中最常用的语句,所以我们一定要理解它的代码运行机制,熟练掌握它并能灵活应用。
整体语法结构如下:
if <条件1>:
<代码逻辑1>
elif <条件2>:
<代码逻辑2>
else:
<代码逻辑3>
执行顺序为:
age = 20
if age >= 18:
print('成年人')
# 全要素
if age <= 6:
print('小朋友')
elif age >= 18:
print('成年人')
else:
print('未成年人')
# 成年人
注:
if elif else
,关键字与表达式之间有空格else
直接用冒号elif
和 else
是可选的elif
可以多个, if
也可以多个,但是不规范,else
只能一个可以按逻辑层级嵌套条件判断:
age = 20
if age < 18:
if age <= 6:
print('小朋友')
else:
print('未成年人')
else:
print('成年人')
如果有复杂的逻辑可以这样写:
a = 1
b = 2
if (a > 1 # TEST
or
b > 3
or
a < b
):
print(1)
else:
print(2)
# 1
可以和 while
(上节有示例)及 for
嵌套使用:
for i in range(10):
if i%2 == 0:
print(i, end=' ')
# 0 2 4 6 8
可以写作成一行:
if(age >= 18):print('成年人')
赋值:
var = '成年人' if age >= 18 else '未成年人'
生成列表,应用在列表推导式,详见列表:
# 生成奇数列表
var = [i for i in range(10) if i%2]
# [1, 3, 5, 7, 9]
生成字典
# 生成偶数字典,值乘于 10
var = {i:i*10 for i in range(10) if i%2}
# {1: 10, 3: 30, 5: 50, 7: 70, 9: 90}
在写 if 条件表达式(Conditional expression)与多重赋值(multiple assignments)时,如果这两个功能结合在一起,我们必须非常小心!
condition = False
x, y = (0, 1) if condition else None, None
>>> x, y
(None, None)
condition = True
x, y = (0, 1) if condition else None, None
>>> x, y
((0, 1), None)
我们试图使用括号来提高可读性,但现在我们搞乱了求值顺序!如果条件为真,那么x将是(0,1),否则为零。而 y 永远都是 None。
在两种情况下使用一致的括号,或者用正常的if-else语句,它不太容易出错::
condition = True
x, y = (0, 1) if condition else (None, None)
>>> x, y
(0, 1)
# or
if condition:
x, y = 0, 1
else:
x, y = None, None
与 try 对比,可查看关于 try 和 if 语句的区别。