一、python里面的布尔值
1.假值:False,None,所有类型的数字0,空序列,空字典;
2.真值:所有的非空值;
3.bool函数可以用来将其他值转换成布尔值;
注意:1.Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。所以空列表,空字符串也是假值
2.尽管假值具有不同的类型,但是不同的假值之前也是不相等的。(很显然,空列表怎么能和空字典相等呢?)
例如:
print {}==[]
返回的是False
3.bool函数是例如 x>y x is y 等函数,比较好理解
二、if ...esle
只要接触过编程语言的,都有这个条件判断语句。python 也不例外,具体的用法如下:
if condition:
doSomething1()
elif condition:
doSomething2()
else:
doSomething3()
当然,if里面也能继续嵌套使用
不过,python里面提供了一种特殊用法
doSomething1() if condition else doSomething2()
比如,我们可以这样使用
x=a if a>b else b
把 a和b中的较大的值赋给x
三、一些特殊的条件判断语句
1.and-or方法
在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
a and b 返回的不是 True 或者 False 而是 a 或者 b( 依次从左往右检查,遇到的第一个假值,返回该假值,否则返回最后一个)
or 方法于and类似,只是or是遇到第一个为真的返回,否则返回最有一个
那么,怎么利用and-or 方法进行条件判断呢,
1. condition and a or b
这种方法的初衷是想,如果condition为真值,那么返回a,否者返回b,
>>> a = "first"
>>> b = "second"
>>> 1 and a or b
'first'
>>> 0 and a or b
'second'
但是这种方法存在一个缺陷,既如果a本身就是一个假值,那么无论如何,返回的都是b。
>>> a = ""
>>>b = "second"
>>> 1 and a or b
'second'
怎么改善这个缺陷呢?最常用的方法就是把 a和b放入一个列表中去,这样,无论如何,[a]都不会是假值。于是我们可以这样写
>>> a=""
>>> b="second"
>>> (1 and [a] or [b])[0]
''
2.利用元祖的方法
首先,我们看一个情况
>>> 1==True
True
>>> 0==False
True
于是,我们就可以这样
>>> print ('condition if false','condition is true')[1==1]
condition is true