02 逻辑运算补充(面试重点,开发了解)

02 逻辑运算补充(面试重点,开发了解)

一、逻辑运算之优先级运算

优先级

  • 括号 > not > and > or

条件语句:由全and、或全or连接

  • 条件语句的单一连接情况,按照从左到右的顺序依次计算
print(True and 10 > 3 and not 4 < 3 and 1 == 1) # True
print(False or 10 < 3 or not 4 < 3 or 1 == 1)	# True

条件语句:混合连用

  • 混合连接的语句,先计算not,再以and为中心,把左右紧连的两个条件用括号括起来,剩下就只剩or语句,顺序就是单纯的从左到右了
res = 10 == 9 and 0 < 3 or '' == 'egon' and 0> 3 or not True or 'egon' == 'dsb' and 333 > 100 or 10 > 4

# 先计算not
res = 10 == 9 and 0 < 3 or '' == 'egon' and 0 > 3 or False or 'egon' == 'dsb' and 333 > 100 or 10 > 4

# 再以and为中心,把左右紧连的两个条件用括号括起来
res = (10 == 9 and 0 < 3) or ('' == 'egon' and 0 > 3) or False or ('egon' == 'dsb' and 333 > 100) or 10 > 4
res = 

二、逻辑运算之短路运算

显/隐式布尔类型

  • 显示布尔值:True,False

  • 隐式布尔值(表示False): 0、None、空([],{},set(),(),'')

  • 所有的数据类型的值都自带布尔值,所以值可以直接当成条件使用

    # 示范一
    if 111 and 123:
        print('ok')
    else:
        print('no')
        
    # 示范二
    x = ''
    if x:
        print('不为空')
    else:
        print("为空")
    

偷懒原则

  • and的偷懒原则:当紧连的左边的条件值为False,右边的条件将不会进行计算。

  • or的偷懒原则: 当紧连的左边的条件值为True,右边的条件将不会进行计算。

  • and或or两边连接的条件,也能进行变量的赋值操作

  • 根据偷懒原则:and和or的运算会返回当前计算位置的值

    # and偷懒
    result1 = 0 and 123
    print(result1)  # 0
    
    # and不偷懒
    result2 = 111 and 123
    print(result2)  # 123
    
    # or偷懒
    result1 = 111 or 123
    print(result1)  # 111
    
    # or不偷懒
    result2 = 0 or 123
    print(result2)  # 123
    

三、总结

  • 逻辑运算的优先级:括号 > not > and > or
    • 逻辑运算纯and或or先后顺序:依次从左到右的顺序
    • 逻辑运算综合情况先后顺序:先计算not,再把and两边条件用括号计算,最后只剩or,顺序从左到右
  • 布尔类型
    • 任何数据类型,都自带布尔值,都可以充当条件使用
    • 显示布尔类型:True,False
    • 隐式布尔类型(表示False):0、None、空([],{},set(),(),'')
  • 偷懒原则
    • and的偷懒原则:当紧连的左边的条件值为False,右边的条件将不会进行计算。
    • or的偷懒原则: 当紧连的左边的条件值为True,右边的条件将不会进行计算。
    • and或or两边连接的条件,也能进行变量的赋值操作
    • and和or的运算会返回当前计算位置的值
posted @ 2020-02-22 20:05  给你加马桶唱疏通  阅读(232)  评论(0)    收藏  举报