|
if和分支结构
上一个例子中已经出现if语句了,所以这部分讲讲if。Python的条件控制主要是三个关键字:if-elif-else,其中elif就是else if的意思。还是看例子:
pets =['dog', 'cat', 'droid', 'fly']
for pet in pets:
if pet == 'dog': # 狗粮
food = 'steak' # 牛排
elif pet == 'cat': # 猫粮
food = 'milk' # 牛奶
elif pet == 'droid': # 机器人
food = 'oil' # 机油
elif pet == 'fly': # 苍蝇
food = 'sh*t' #
else:
pass
print(food)
需要提一下的是pass,这就是个空语句,什么也不做,占位用。Python并没有switch-case的语法,等效的用法要么是像上面一样用if-elif-else的组合,要么可以考虑字典:
pets = ['dog', 'cat', 'droid', 'fly']
food_for_pet = {
'dog': 'steak',
'cat': 'milk',
'droid': 'oil',
'fly': 'sh*t'
}
for pet in pets:
food = food_for_pet[pet] if pet in food_for_pet else None
print(food)
这里还用到了一个if-else常见的行内应用,就是代替三元操作符,如果键在字典中,则food取字典的对应值,否则为None。
if表达式中的小技巧
通过链式比较让语句简洁:
if -1 < x < 1: # 相较于 if x > -1 and x < 1:
print('The absolute value of x is < 1')
判断一个值是不是等于多个可能性中的一个:
if x in ['piano', 'violin', 'drum']: # 相较于 if x == 'piano' or x == 'violin' or x =='drum':
print("It's an instrument!")
Python中的对象都会关联一个真值,所以在if表达式中判断是否为False或者是否为空的时候,是无需写出明确的表达式的:
a = True
if a: # 判断是否为真,相较于 a is True
print('a is True')
if 'sky': # 判断是否空字符串,相较于 len('sky') > 0
print('birds')
if '': # 判断是否空字符串,同上
print('Nothing!')
if {}: # 判断是否空的容器(字典),相较于len({}) > 0
print('Nothing!')
隐式表达式为False的是如下状况:
– None
– False
– 数值0
– 空的容器或序列(字符串也是一种序列)
– 用户自定义类中,如果定义了__len__()或者__nonzero__(),并且被调用后返回0或者False |
|