我说一下的的拙见-
and 和 or 是用来处理多个条件,得出结果的,要处理的东西可以化为最简单的True和False。
什么是T,什么是F,就不说了,百度里一大堆,什么集合,01,哈希,几乎所有都可分T,F。
T和F是最基础的,能包含所有,或组成所有。或可以看作1和0,1可以包含除0之外的所有,0就是0,老师是这么教的,是方便理解,不要太较真。
and和or就是处理T和F的,下面是老师给的公式图:
and:
T and T = T
T and F = F
F and T = F
F and F = F
or :
T or T = T
T or F = T
F or T = T
F or F = F
我经过分析总结又得出:
and F = F ,elseT,就是and两边连接的值只要有一个F,得出的结果就是F,反之一个F都没,结果就是T,多个and在一起,可以看成一个and,and相对偏向获取F值
or T = T, elseF,or两边连接的值只要有一个是T,结果就是T,反之要是一个T都没有全是F,结果才是F,跟and一定程度上是相反的,多个or在一起可以看成一个or,or偏向获取T值
还有就是这些都是用于if判断TF的,我们首先学的是if,不满足的情况才选择else(没有else,只有if,也可以运行判断的),也可以看作if是T,else是F,而要获取if的T就是要那多个条件判断后输出的是T,在输出结果的前一步是获得T,再前一步才是F(再往前可以无限套娃),所以要优先进行F的判断,最终进行T的判断,即and优先于or,就是先and里挑F,or里挑T,你的想法需要化为数据带进这个基础公式里,才能输出你想要的结果。
上面的我基本都试验过了:
a = True , b = Ture , c = False , d = False
if c or a and b and d or c:
print(True)
else:
print(False)
>False
可以把abcd,and,or几个值的顺序,数量都变一下,就能印证上面的理论了。
一般先算括号里的,再and,再or,多个and或or可以看作一个。
(假设市场中你和老板争论,把-鸡蛋里没石头-带入上面abc的值,老板说鸡蛋里不可能有石头,你把abc都砸了,发现c有石头,那结果是啥?我猜你会被打,被认为是捣乱的,石头也是你弄得障眼法,毕竟鸡蛋里怎么会有石头呢。单纯论结果的话,是F,not鸡蛋里没石头,鸡蛋有石头。)
在这个逻辑的世界里,只分真假两种东西,几乎所有东西都可以带进来,除了没赋值字母和中文,就像你是张三或zhaosi,它不认识你,程序里没你的资料,就算你是亿万富翁也没用,除非带上""变成字符串或集合,而程序里除了少数几个如0,None,空的集合[]之类的,其他的基本都默认bool值为True,还包括内置函数,print(bool(print))=True,print(bool(print()))=False,如果把上面的d改成等于2,就会输出True。
not跟and,or是同时教的,not 比较好懂,就是反过来,把T变成F,F变成T,not 1的bool是F。