Python3学习笔记:逻辑运算中的AND, OR

Python3中的逻辑运算,跟其它语言的逻辑运算存在差别。

当运算数据皆为布尔类型时,逻辑运算思路相同。例如

if __name__ == '__main__':
    print("true and true =", True and True)
    print("true and false =", True and False)
    print("false and true =", False and True)
    print("false and false =", False and False)
    
    print("true or true =", True or True)
    print("true or false =", True or False)
    print("false or true =", False or True)
    print("false or false =", False or False)

输出为

true and true = True
true and false = False
false and true = False
false and false = False
true or true = True
true or false = True
false or true = True
false or false = False

但当运算数据中存在非布尔类型时,思路就不同了。例如

if __name__ == '__main__':
    print("5 and true =", 5 and True)
    print("true and 5 =", True and 5)
    print("false and 5 =", False and 5)
    print("5 and false =", 5 and False)
    
    print("5 or true =", 5 or True)
    print("true or 5 =", True or 5)
    print("false or 5 =", False or 5)
    print("5 or false =", 5 or False)

输出结果为

5 and true = True
true and 5 = 5
false and 5 = False
5 and false = False
5 or true = 5
true or 5 = True
false or 5 = 5
5 or false = 5

现对思路总结如下:

(1)对于AND,若运算数据中存在False,则为False;否则,返回最右端数据。

(2)对于OR,若运算数据中存在False,则返回剩余数据;否则,返回最左端数据。

那问题来了,如果运算数据都不为布尔类型呢?

if __name__ == '__main__':
    print("5 or 6 =", 5 or 6)
    print("5 and 6 =", 5 and 6)

上面的思路,同样适用,结果如下:

5 or 6 = 5
5 and 6 = 6

再来看更复杂的情况。

if __name__ == '__main__':
    print("5 or 6 and 7=", 5 or 6 and 7)
    print("5 and 6 or 7=", 5 and 6 or 7)
    print("5 or 6 or 7=", 5 or 6 or 7)
    print("5 and 6 and 7=", 5 and 6 and 7)

这里需要强调的是,在Python中,AND的优先级高于OR,因此,我们再按照之前的总结(需要进行简单的嵌套),可以推算出结果,

5 or 6 and 7= 5
5 and 6 or 7= 6
5 or 6 or 7= 5
5 and 6 and 7= 7
其它复杂情况,可依此类推。

你可能感兴趣的:(人工智能,Python3,Python3)