python学习笔记-day02 运算符

运算符

算术运算符:+ -  /  % // 等

逻辑运算符: not and or  优先级 not >and >or

运算时: and 前为False 后面的不再计算,前为True,输出后面的;

                or 前面为True,后面的也不再计算,否则输出后面的:

 

print(1 or 2)  #1
print(0 or 3)  #3
print(2 and 0) #0
print(0 and 2) #0
print(2 and 3) #3

类比,int 和 str 数据类型可以相互转换,int 和 bool 类型也可以相互转换:

# int --> bool  非零即为True ,只有0 才是False
print(bool(0))  #False
print(bool(1))  #True
print(bool(-1)) #True

#bool -->int True 为1 ,False 为0
print(int(True))   #1
print(int(False))  #0

还有一点需要特别注意:

逻辑运算符(and or) 前后都是数字时,结果是数字;规则按照上面说的输出:

x and y: x为True ,输出y;否则输出x;

x or y: x 为True ,输出x ;   否则输出y;

逻辑运算符(and or )前后都是比较运算符时,输出的才是True  False

print(1 or 2)      #1
print(1 <2 or 2>3) #True
print(1 >2 or 2<3) #True

再来看个复杂的:

print(2 or 100 or 3 or 4)  #2
print(0 or 4 and 3 or 2)   #3  先算and得到3 ==> 0 or 3 or 2 ==>3 

 

最后看一个逻辑运算符前后,数字和比较运算符结合的:

print(2 or 1<3) # 2

print(2 and 1<3) #True

print(2 and 1>3) #False

print(1>2 and 3 or 4 and 3<2) #False

其实规律就是,当 or 和 and的运算规则:

第一行,or 前面的是2就不用管后面的了,也就是后面的结果都不看!

第二行,and 前是数字2 (也可以看做True 因为后面的是比较运算符,结果肯定为True or False),后面1 <3 为True ,所以最终结果为True

第三行,and 前是2(此处看为True)后面比较运算符为False,所以最终结果为False;

第四行, 有两个and  一个or ,所以先算and ,第一个and 是False, 后面的and 是False  所以最终结果是False;

 

下面这个就很简单:(面试题? 23333)

print(2 or 1<3 and 2)  #2

下面这个我竟然出错了!:

print(1<3 and 3 or 2)  #3

其实还是先算and 嘛,and 前面为True ,所以看y 为2 ,所以前面1<3 and 3 结果为3  就不用看后面的2了~

posted @ 2018-08-11 10:00  写的BUG代码少  阅读(142)  评论(0编辑  收藏  举报