2.2条件判断 (二)
布尔型变量做运算
#布尔型做and or运算时返回的依然是bool类型的
In [28]:
a = True
b = False
print('a and b is {}'.format(a and b))
print('a or b is {}'.format(a or b))
a and b is False
a or b is True
非布尔型变量做and or not运算
#非布尔,其他类型的做and or运算时,返回的是其中一个,或者说返回的是值本身的类型
In [29]:
a = 'hello world'
b = [1,2,3]
print('a and b is {}'.format(a and b))
print('a or b is {}'.format(a or b))
a and b is [1, 2, 3]
a or b is hello world
In [30]:
a = 'hello world'
b = []
print(bool(b))
print('a and b is {}'.format(a and b))
#b是空列表,依然要进行b的计算,所以a and b is []
print('a or b is {}'.format(a or b))
#a是有值的'hello world' ,所以就不在对b检测了,输出'a and b is hello world'
False
a and b is []
a or b is hello world
#非布尔型做not运算,永远返回 Ture 或者 False
#not是取反操作,无内容返回Ture,有内容返回Fals
In [31]: not ''
Out[31]: True
In [32]: not 'zzqq'
Out[32]: False
条件判断的近亲—断言
#(下面的是一个伪代码,伪代码运行会报错)我断言 (condition) 它一定是这样的,如果不是这样,我就崩溃
In [33]:
if not condition:
crash program
File "<ipython-input-33-54b60abacdfd>", line 3
crash program
^
SyntaxError: invalid syntax
assert 函数
#是18不输出任何结果
In [34]:
age = 18
assert age ==18
#不是18,报错
In [35]:
age = 19
assert age ==18
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-35-c574b3850c8e> in <module>()
1 #不是18,报错
2 age = 19
----> 3 assert age ==18
AssertionError:
???
#AssertionError意思是:断言
#断言想输出一定的文字:
In [59]:
age = 19
assert age == 18,'她竟然不是18岁'
#报错中——AssertionError: 她竟然不是18岁
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-59-54d6dd91fe88> in <module>()
2 #断言想输出一定的文字:
3 age = 19
----> 4 assert age == 18,'她竟然不是18岁'
5
6 #报错中——AssertionError: 她竟然不是18岁
AssertionError: 她竟然不是18岁