if 语句与and / or 用法扩展

if ... elif... else: 他们垂直对齐,具有相同缩进,如果所有的测试都为假的话,就执行else部分。

if / else 三元表达式 A=Y if X else Z 等价于 A = ((X and Y) or Z)。首先明确的是Y与Z因为都是值,或者其它类型。所以默认就是为真。具体and/or的操作见下面真值测试

>>> branch = {'spam': 1.24,
... 	      'ham': 1.99,
... 	      'egg': 0.33}
>>> print(branch.get('spam', 'bad choice'))    #字典的get方法调用或捕捉异常,最后是一个默认值
1.24

>>> if choice in branch:
...     print(branch[choice])
...     else:
...     print('bad choice')                                        #等价与对上面的式子类switch实现

真值测试

1:任何非零数字或非空对象都为真

2:数字0,空对象[],以及特殊对象None都被认为假

3:==,>=等测试都会返回布尔值

4:True代表1,False代表0,注意T,F都必须大写

>>> while true:
... 	print('hello world')
... 	break
... 
NameError: name 'true' is not defined
and / or 的用法

1:and 和 or 返回操作的对象, or是第一个为真的对象,and返回第一个为假的对象

2:x = A or default 如果A为真(或非空)的话,将X设置为A,否则为default

4:and/or 同时还可以用来进行条件的连接

5:and 和 or 还可以连接两个语句

>>> 0 or [] and 5
[]
>>> 2 or 4,6 or 9
(2, 6)

>>> x = 0 or 6
>>> x
6

>>> if 1>0 and 5<6:
... 	print("true")
... 
true

>>> [print(i) and i  for i in range(3)]
0                                        
1
2
[None, None, None]                        #因为print()的结果都是None,所以表达式的值为3个None
>>> [i and print(i) for i in range(3)]
1
2
[0, None, None]                           #因为第一次i=0为假,所以表达式的值就为0
>>> [print(i) or i for i in (2,3,4)]      #这是最好的方式,既能输出结果,同时也给表达式赋值了
2
3
4
[2, 3, 4]



你可能感兴趣的:(测试,扩展,branch)