一、条件分支语句if
到目前为止,我们几乎一直在讨论数据结构。现在,我们将开始探讨代码结构。下面第一个例子是应该Python小程序,判断一个布尔变量a的值,然后打印输出合适的取值:
a = True
if a:
print("hey")
else:
print("hello")
=== RESTART: E:\Python\6.py ===
hey
程序中,if和else两行是Python用来声明判断条件是否满足的语句,也就是“逻辑表达式”;冒号后面的是语句块,就是条件满足后执行的一组语句;冒号表示语句层次,语句块都得缩进,在Python中,代码缩进决定了if和else是如何配对的,例如下面这个程序:(注意:判断语句结尾必须要输入冒号,否则Python解释器会报错。)
age = 20
if 0 <= age <= 6:
print(age, "童年")
else:
if 7 <= age <= 17:
print(age, "少年")
else:
if 18 <= age <=40:
print(age, "青年")
=== RESTART: E:\Python\6.py ===
20 青年
在第一个判断age中,因为age的值不在[0, 6],所以程序跳转执行判断else,而age还是不属于[7, 17],所以程序继续跳转执行判断else,这一次age属于[18, 40],因此程序输出20,青年。
如果要检查超过两个条件,可以用if、elif(即else if)和else:
>>> a = 25
>>> if a > 30:
print("good")
elif a > 20:
print("ok")
else:
print("no")
ok
如果想同时进行多重比较判断,可以用布尔操作符and、or或者not连接来决定表达式的取值,布尔操作符的优先级没有比较表达式的代码搞,也就是说,表达式要先计算然后再比较:
>>> x = 7
>>> 5 < x and x < 10
True
#如果对同一个变量做多个and比较操作,Python允许这样用:
>>> 5 < x < 10
True
>>> 5 < x or x < 10
True
>>> 5 < x and x > 10
False
>>> 5 < x or x > 10
True
>>> 5 < x and not x > 10
True
什么是真值
一个成假赋值不一定明确表示为False,下面的情况也会被认为是False:
布尔
False
null类型
Name
浮点型
0.0
空字符串
""
空列表
[]
空元组
()
空字典
{}
空集合
set()
剩下的都会被认为是True。Python程序中使用定义“真值”的方式来判断数据结构是否为空以及成假条件,如果你在判断一个表达式而不是一个简单的变量,Python会先计算表达式的值,然后返回布尔型结果。