说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
现实世界并不是那么整齐划一的,会出现各种各样的情况,我们将这些情况分类进行处理,形成了多个逻辑分支。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 没有 else 也是合法的)elif
可以多个, if
也可以多个(其实是多条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
if 语句用于有条件的执行:
if_stmt ::= "if" assignment_expression ":" suite
("elif" assignment_expression ":" suite)*
["else" ":" suite]
它通过对表达式逐个求值直至找到一个真值(请参阅 布尔运算 了解真值与假值的定义)在子句体中选择唯一匹配的一个;然后执行该子句体(而且 if 语句的其他部分不会被执行或求值)。 如果所有表达式均为假值,则如果 else 子句体如果存在就会被执行。
与 try 对比,可查看关于 try 和 if 语句的区别。
更新时间:2023-12-23 18:43:47 标签:python if else